sys 模块的应用
1.常见的sys模块的应用:
1.在解释器启动后, argv 列表包含了传递给脚本的所有参数, 列表的第一个元素为脚本自身的名称 argv(命令行参数个数)
#!/usr/bin/env python import sys print(sys.argv) print(sys.argv[0]) print(sys.argv[1]) print(sys.argv[2])
执行脚本:
python3 sys_0.py ni hao a
结果:
['sys_0.py', 'ni', 'hao', 'a']
sys_0.py
ni
hao
结论:
sys.argv表示程序打印以列表的形式打印脚本名及参数
sys.argv[0] 表示程序自身
sys.argv[1] 表示程序的第一个参数
sys.argv[2] 表示程序的第二个参数
2. sys.exit(n) 退出python执行程序,下面的代码将不会执行,如同shell中的exit一样
。
#!/usr/bin/env python import sys a = 4 if a <5: print(1) sys.exit(3) print(2)
执行脚本:
python3 sys_0.py
结果:
1
3. sys.path 包含输入模块的目录名列表
#!/usr/bin/env python import sys for i in sys.argv: print(i) print("\n\nThe pathname", sys.path, '\n')
执行脚本:
python3 sys_0.py text1 test2
结果:
sys_0.py
text1
test2
The pathname ['/Python', '/usr/local/python3/lib/python36.zip', '/usr/local/python3/lib/python3.6/site-packages/psutil-2.1.3-py3.6-linux-x86_64.egg']
3.sys.stdin/sys.stdout/sys.stderr
stdin,stdout,stderr在Python中都是文件属性对象, 他们在python启动时自动与shell环境中的标准输入, 输出, 出错相关. 而python程序在shell中的I/O重定向是有shell来提供的,与python本身没有关系.python程序内部将stdin, stdout, stderr读写操作重定向到一个内部对象
#!/usr/bin/env python import sys #标准输入 print('hi, %s' % input('Please enter your name:')) #等价于上面的 print("Please enter you name") name = sys.stdin.readline()[:-1] print("Hi, %s" % name) #标准输出 print("Holle World\n") #等价于上面的 sys.stdout.write("stdout resule is good\n")
执行:
[root@localhost Python]# python3 sys_0.py
Please enter your name:text1
hi, text1
Please enter you name
text2
Hi, text2
Holle World
stdout resule is good