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