###python中sys模块之获取参数###

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

猜你喜欢

转载自blog.csdn.net/weixin_44821839/article/details/91827960