sys模块:全称system,指的是解释器(os指的是操作系统)
常用操作,用于接收系统操作系统调用解释器传入的参数
1.sys.argv #获取脚本传递的所有参数,返回一个列表;列表中的所有元素均为脚本传递的参数
sys.argv[0] #获取脚步传递的第一个参数;固定为脚本名称
sys.argv[1] #获取脚步传递的第二个参数
可以用索引的方式获得脚本传递的参数
2.sys.version获得解释器的版本信息,返回一个字符串
作用:根据python版本编写符合不同版本的程序 使程序可兼容
import sys
import os
print(sys.version)
运行:
3.6.4 (default, Aug 10 2018, 11:14:49)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)]
也可以通过字符串切片的特性得到解释器版本号
import sys
import os
print(sys.version)
print(sys.version[:5])
运行:
3.6.4 (default, Aug 10 2018, 11:14:49)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)]
3.6.4
3,sys.path #返回模块的搜索路径,初始化使用PYTHONPATH环境变量
import os
import sys
print(sys.path)
运行:
['/home/kiosk/PycharmProjects/20190523/20190524', '/home/kiosk/PycharmProjects/20190523', '/usr/local/python3/lib/python36.zip', '/usr/local/python3/lib/python3.6', '/usr/local/python3/lib/python3.6/lib-dynload', '/usr/local/python3/lib/python3.6/site-packages', '/usr/local/python3/lib/python3.6/site-packages/Twisted-17.1.0-py3.6-linux-x86_64.egg', '/usr/local/python3/lib/python3.6/site-packages/Automat-0.7.0-py3.6.egg', '/usr/local/python3/lib/python3.6/site-packages/constantly-15.1.0-py3.6.egg', '/usr/local/python3/lib/python3.6/site-packages/zope.interface-4.5.0-py3.6-linux-x86_64.egg', '/usr/local/python3/lib/python3.6/site-packages/attrs-18.2.0-py3.6.egg']
4.sys.platform # 可以实现跨平台
import sys
import os
# print(sys.version)
# print(sys.version[:5])
# print(sys.path)
print(sys.platform)
if sys.platform == 'linux':
os.system('linux系统的命令')
else:
os.system('其他系统的命令')
应用练习:
需求:
编写脚本:compare.py 在命令中运行python 文件1 文件2 输出显示两个文件的不同之处
import difflib
import sys
方法一:
parameter = sys.argv
with open(parameter[1]) as f1,open (parameter[2]) as f2:
file1 = f1.read().splitlines(keepends=True)
file2 = f2.read().splitlines(keepends=True)
diff = difflib.Differ()
diff_result = diff.compare(file1,file2)
print(''.join(list(diff_result)))
方法二:
if len(sys.argv) !=3:
print(
"""
Usage: %s 比较的文件1 比较的文件2
"""%(sys.argv[0])
)
else:
filename1 = sys.argv[1]
filename2 = sys.argv[2]
try:
with open(filename1) as f1,open(filename2) as f2:
content1 = f1.read().splitlines(keepends=True)
content2 = f2.read().splitlines(keepends=True)
except Exception as e:
print('比较错误,错误的原因',e)
d = difflib.HtmlDiff()
htmlContent = d.make_file(content1,content2)
with open('different.html','w') as f:
f.write(htmlContent)
运行结果:
[kiosk@foundation40 20190524]$ /usr/local/python3/bin/python3 compare.py /home/kiosk/file /home/kiosk/file1
hello
+
+ mewfw4t
+ 4t5tr
+ fcdfbv
+ efr4