sys是python的内置模块,它包含了python解释器和系统环境有关的参数和函数,例如sys.stdin, sys.stdin, sys.stderr 是与解释器的标准输入,输出和错误流相对应的文件对象, sys.argv可以获取外部向程序内部传递的参数。
获取python的版本
>>> import sys
>>> sys.version
'3.6.6 (v3.6.6:4cf1f54eb7, Jun 26 2018, 19:50:54) \n[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)]'
这三者是与解释器的标准输入,输出和错误流相对应的文件对象。关于这三个文件对象足以专门写一篇教程,这里只举一个例子来说明sys.stdout的作用
import sys
sys.stdout = open('test', 'a')
print('ok')
sys.stdout是标准输出流,上面的代码将标准输出流重定向到一个打开的文件中,这样print函数在执行时,就不会在终端输出内容,而是在将内容写入到文件中
sys.modules是一个全局字典,该字典是python启动后就加载在内存中。每当程序员导入新的模块,sys.modules将自动记录该模块。当第二次再导入该模块时,python会直接到字典中查找,从而加快了程序运行的速度
获取指定模块搜索路径的列表,当你在程序中使用import关键字引入一个模块时,解释器会按照一定的顺序来查找这个模块
模块搜索路径存储在 system 模块的 sys.path 变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录
程序执行到代码末尾,解释器会自动退出,如果你希望中途退出程序,可以使用sys.exit()方法,n可以传入一个整数,你可以在主程序中捕获对sys.exit()的调用并获得这个n,一般0表示正常退出,其他为异常
import sys
def test():
sys.exit(3)
try:
test()
except SystemExit as e:
print(e)
程序输出结果是 3
在外部向程序内部传递参数,定义一个名为test.py的脚本,内容如下
import sys
def my_print(content, count):
for i in range(count):
print(content)
if __name__ == '__main__':
print(sys.argv)
content, count = sys.argv[1], int(sys.argv[2])
my_print(content, count)
这段代码看起来有点怪怪的,sys.argv到底是什么东西,别急,要想理解这段代码,就必须在终端通过python命令来运行程序
python3 test.py 接收参数 2
在使用python命令执行脚本时,脚本的后面还跟了两段内容,这就是在向程序传递运行时所需要的参数,sys.argv就是用来存储这个参数的
程序输出内容为
['test.py', '接收参数', '2']
接收参数
接收参数
sys.argv是一个列表,包含了脚本的名称后紧跟在脚本后面的参数
QQ交流群: 211426309