Python 系统模块 sys, os 使用

󰃭 2017-02-19

模块功能

  • sys 模块包括了Python运行时配置, 进程参数,模块搜索路径,加载的模块列表等,可以与前当程序运行的系统环境交互
  • os 模块包括程序经常用的操作系统调用,目录、进程、shell环境等

sys 模块

# sys.modules 是一个字典,python程序所导入的每一个模块在其中都有一项
In [19]: sys.modules['os']
Out[19]: <module 'os' from '/data/py3env/lib/python3.4/os.py'>


# sys.path 模块搜索路径列表,导入模块的时候,python解释器在列表的每个目录下搜索模块文件
# 可以通过修改这个路径添加查找模块的位置
In [22]: sys.path
Out[22]:
['',
'/data/py3env/bin',
'/data/py3env/lib/python3.4',
'/data/py3env/lib/python3.4/plat-x86_64-linux-gnu',
'/data/py3env/lib/python3.4/lib-dynload',
'/usr/lib/python3.4',
'/usr/lib/python3.4/plat-x86_64-linux-gnu',
'/data/py3env/lib/python3.4/site-packages',
'/data/py3env/lib/python3.4/site-packages/IPython/extensions',
'/home/servadmin/.ipython']
  • sys.stdin 标准输入, sys.stdout 标准输出, sys.stderr 标准出错
  • sys.exit 退出进程
  • sys.argv 程序的命令行参数列表
  • sys.version python 版本

os 模块

  • os.environ 环境变量
  • os.system, os.popen, os.execv, os.spawnv 运行外部程序
  • os.fork, os.kill 创建子进程,结束进程
  • os.open, os.read. os.write 更底层的打开,读写文件方法
  • os.remove, os.rename, os.mkdir, os.rmdir 移动,创建,删除目录或文件
  • os.path 目录访问,处理文档和目录
  • os.getpid, os.getcwd 进城pid,当前工作路径

sys, os 模块使用实例,计算目录下文件 md5

#!/usr/bin/env python
# coding: utf-8

# 实例:file_md5.py
# 功能:遍历目录,输出目录下所有文件的 md5


import os
import sys
import hashlib


if __name__ == '__main__':
    # 检查输入的路径
    if len(sys.argv) != 2:
        sys.exit(1)
    if not os.path.isdir(sys.argv[1]):
        sys.exit(2)
    else:
        dir_path = sys.argv[1]

    # 列出目录下所有文件
    file_list = []
    for cur_file in os.listdir(dir_path):
        cur_file = os.path.join(dir_path, cur_file)
        if os.path.isfile(cur_file):
            file_list.append(cur_file)
            print(cur_file)


    # 计算文件的 md5
    for cur_file in file_list:
        md5 = hashlib.md5()
        with open(cur_file, 'rb') as f:
            content = f.read()
            content = bytearray(content)
            md5.update(content)
            print(md5.hexdigest(), cur_file)
# 运行脚本,计算 /tmp 目录下文件的md5
python3 file_md5.py /tmp

sys, os 模块使用实例,查找指定用户的进程

#!/usr/bin/env python
# coding: utf-8

# 实例:usr_prog.py
# 功能:找出用户的进程


import os
import sys
import hashlib


if __name__ == '__main__':
    # 检查输入的用户名
    if len(sys.argv) != 2:
        sys.exit(1)
    else:
        user = sys.argv[1]

    # 调用外部命令,列出用户的进程
    file_list = []
    for prog in os.popen('ps -ef'):
        if prog.find(user) == 0:
            print(prog)
# 运行脚本,找出 root 用户的进程
python3 usr_prog.py root