sys模块的功能
sys是python中较为常用的一个模块,他提供了对python脚本运行时的环境的操作。
sys功能:
1 sys.argv #将python脚本运行时的脚本名以及参数作为一个list,并输出。
1 # test_py.py文件 2 #/usr/bin/python3 3 import sys 4 5 print('the script name is:',sys.argv[0]) 6 if len(sys.argv) > 1: 7 print("there are", len(sys.argv)-1, "arguments:") # 使用len(sys.argv)-1采集参数个数-1为减去[0]脚本名称 8 for arg in sys.argv[1:]: #输出除了[0]外所有参数 9 print(arg) 10 else: 11 print("there are no arguments!") 12 13 14 15 [root@slyoyo ~]# python3 test_py.py haha 16 the script name is: test_py.py 17 there are 1 arguments: 18 haha
2 sys.path #返回一个list,该list为当前脚本的path环境变量(PYTHONPATH)
1 >>> sys.path 2 ['', '/usr/local/python/lib/python34.zip', '/usr/local/python/lib/python3.4', '/usr/local/python/lib/python3.4/plat-linux', '/usr/local/python/lib/python3.4/lib-dynload', '/usr/local/python/lib/python3.4/site-packages']
如果我们要增加或者删除pythonpath的话,使用list的insert或者pop功能即可。
1 import os,sys 2 print(sys.path) 3 new_path=os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 4 print(new_path) 5 sys.path.insert(0,new_path) 6 print(sys.path) 7 8 #结果: 9 ['C:\Users\Capital-D\PycharmProjects\untitled\test\atm\fun', 'C:\Users\Capital-D\PycharmProjects\untitled', 'C:\windows\SYSTEM32\python34.zip', 'C:\Python34\DLLs', 'C:\Python34\lib', 'C:\Python34', 'C:\Python34\lib\site-packages'] 10 C:UsersCapital-DPycharmProjectsuntitled estatm 11 ['C:\Users\Capital-D\PycharmProjects\untitled\test\atm', 'C:\Users\Capital-D\PycharmProjects\untitled\test\atm\fun', 'C:\Users\Capital-D\PycharmProjects\untitled', 'C:\windows\SYSTEM32\python34.zip', 'C:\Python34\DLLs', 'C:\Python34\lib', 'C:\Python34', 'C:\Python34\lib\site-packages']
3 sys.platform #返回当前平台
1 import sys,os 2 print(sys.platform) 3 #结果: 4 win32
4 sys.stdout sys.stdin #标准输出/输入
1 print 'Dive in' # 标准输出 2 saveout = sys.stdout # 终在重定向前保存stdout,这样的话之后你还可以将其设回正常 3 fsock = open('out.log', 'w') # 打开一个新文件用于写入。如果文件不存在,将会被创建。如果文件存在,将被覆盖。 4 sys.stdout = fsock # 所有后续的输出都会被重定向到刚才打开的新文件上。 5 6 print 'This message will be logged instead of displayed' # 这样只会将输出结果“打印”到日志文件中;屏幕上不会看到输出 7 8 sys.stdout = saveout # 在我们将 stdout 搞乱之前,让我们把它设回原来的方式。 9 10 fsock.close() # 关闭日志文件。
5 sys.stderr #错误输出
使用方法同上