sys模块是python的内置函数:可供访问由解释器使用或维护的变量和与解释器进行交互的函数。
sys内的常用函数:
1:sys.path:获取指定模块搜索路径的字符串集合,即一个list。在import导入module_name时,就是根据sys.path的路径来搜索module.name。
import sys path_list = sys.path for i in path_list: print(i) C:\Users\heave落色\PycharmProjects\untitled1 C:\Users\heave落色\PycharmProjects\untitled1 C:\Users\heave落色\AppData\Local\Programs\Python\Python36\python36.zip C:\Users\heave落色\AppData\Local\Programs\Python\Python36\DLLs C:\Users\heave落色\AppData\Local\Programs\Python\Python36\lib C:\Users\heave落色\AppData\Local\Programs\Python\Python36 C:\Users\heave落色\AppData\Local\Programs\Python\Python36\lib\site-packages C:\Users\heave落色\AppData\Local\Programs\Python\Python36\lib\site-packages\win32 C:\Users\heave落色\AppData\Local\Programs\Python\Python36\lib\site-packages\win32\lib C:\Users\heave落色\AppData\Local\Programs\Python\Python36\lib\site-packages\Pythonwin C:\Program Files\JetBrains\PyCharm 2017.3.3\helpers\pycharm_matplotlib_backend
可以通过sys.path.append(),来将指定路径加入。
2:sys.argv:实现从程序外部向程序传递参数
sys.argv 变量是一个包含了命令行参数的字符串列表, 利用命令行想程序传递参数. 其中,脚本的名称总是 sys.argv 列表的第一个参数。
import sys print(sys.argv) ['C:/Users/heave落色/PycharmProjects/untitled1/test.py']
3:sys.exit([arg]) 程序中间的退出, arg=0为正常退出,其他为异常退出。
如果需要中途退出程序,可以调用sys.exit函数,带有一个可选的整数参数返回给调用它的程序,表示你可以在主程序中捕获对sys.exit的调用。
import sys def exitfunc(value): print (value) sys.exit(0) print("hello") try: sys.exit(90) except SystemExit as value: exitfunc(value) print("come?")
程序首先打印hello,在执行exit(90),抛异常把90传给values,values在传进函数中执行,打印90程序退出。后面的”come?”因为已经退出所以不会被打印. 而此时如果把exitfunc函数里面的sys.exit(0)去掉,那么程序会继续执行到输出”come?”.
4sys.modules
sys.modules是一个全局字典(keys是模块名 ,values是模块),该字典是python启动后就加载在内存中。每当程序员导入新的模块,sys.modules将自动记录该模块。当第二次再导入该模块时,python会直接到字典中查找,从而加快了程序运行的速度。它拥有字典所拥有的一切方法.
5 sys.getdefaultencoding() / sys.setdefaultencoding() / sys.getfilesystemencoding()
sys.getdefaultencoding()
获取系统当前编码,一般默认为ascii。
sys.setdefaultencoding()
设置系统默认编码,执行dir(sys)时不会看到这个方法,在解释器中执行不通过,可以先执行reload(sys),在执行 setdefaultencoding(‘utf8’),此时将系统默认编码设置为utf8。(见设置系统默认编码 )
sys.getfilesystemencoding()
获取文件系统使用编码方式,Windows下返回’mbcs’,mac下返回’utf-8’
6 sys.stdin/sys.stdout/sys.stderr
stdin,stdout,stderr在Python中都是文件属性对象, 他们在python启动时自动与shell环境中的标准输入, 输出, 出错相关. 而python程序在shell中的I/O重定向是有shell来提供的,与python本身没有关系.python程序内部将stdin, stdout, stderr读写操作重定向到一个内部对象.
sys.stdout 标准输出
sys.stdin 标准输入
sys.stderr 错误输出
7 sys.platform
获取当前系统平台. 如:win32、Linux等