负责程序与python解释器的交互
常用方法:
- sys.argv
- sys.platform
- sys.path
- sys.exit(n)
- sys.stdin | sys.stdout | sys.stderr
-
sys.arge
实现从程序外部向程序内部传递参数
#text.py
import sys
print(sys.argv[0]) #文件名总是列表的第一个参数
print(sys.argv[1])
print(sys.argv[2])
print(sys.argv[1:])
运行:
>>> text.py -p 80
text.py
-p
80
['-p','80']
-
sys.platform
返回当前操作平台名称,windows
返回win32
,linux
返回linux2
#text.py win 10 64bit
>>> import sys
>>> print(sys.platform)
运行:
>>> text.py
win32
#text.py kali linux 2016.2
>>> import sys
>>> print(sys.platform)
运行:
>>> text.py
linux2
-
sys.path
返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
#text.py
import sys
print(sys.path)
运行:
>>> text.py
['', 'C:\\Users\\Administrator\\Desktop', 'E:\\python\\python36.zip', 'E:\\python\\DLLs', 'E:\\python\\lib', 'E:\\python', 'E:\\python\\lib\\site-packages', 'E:\\python\\lib\\site-packages\\pip-9.0.1-py3.6.egg']
- 通过
sys.path.append(“自定义模块路径”)
可以自定义添加模块路径
-
sys.exit(n)
控制程序可以中途退出,n = 0
时 程序正常退出,非 0 时引发SystemExit
异常,可以在主程序中捕获
#text.py
import sys
def num(number):
print(number)
sys.exit(0)
print("[*]先执行我!")
try:
sys.exit(1)
except SystemExit as number:
num(number)
print("[*]我没有执行!")
运行:
>>> text.py
[*]先执行我!
1
-
-
sys.stdin
标准输入 -
sys.stdout
标准输出 -
sys.stderr
错误输出
-
>>> print("hi~ %s" % input("input:")) #python 3
>>> print("hi~ %s" % raw_input("input:")) #python2.7
#相当于
import sys
print("input:")
name = sys.stdin.readline()
print("hi~ %s" % name)
运行:
>>> input:assas
hi~ assas # python3
hi~ assas # python2.7
hi~ assas # sys.stdin
print("hello")
#相当于
import sys
sys.stdout.write("hello")
运行:
>>> hello #print
>>> hello #sys.stdout
stdin
,stdout
,stderr
在Python中都是文件属性的对象,他们在Python启动时自动与Shell环境中的标准输入,输出,出错 关联。而Python程序的在Shell中的I/O重定向与DOS命令的重定向完全相同,
其实这种重定向是由Shell来提供的,与Python 本身并无关系。
#Python 2.7.14
>>> import sys
>>> sys.stdin
', mode 'r' at 0x00000000058DB030>
>>> sys.stdout
', mode 'w' at 0x00000000058DB0C0>
>>> sys.stderr
', mode 'w' at 0x00000000058DB150>