import sys
sys.version
'3.12.8 | packaged by conda-forge | (main, Dec 5 2024, 14:24:40) [GCC 13.3.0]'
import sys
sys.stdout = open('xx_test', 'a')
print('ok')
sys.stdout
是标准输出流,上面的代码将标准输出流重定向到一个打开的文件中,
这样 print
函数在执行时,就不会在终端输出内容,而是在将内容写入到文件中。
sys.modules
sys.modules
是一个全局字典,该字典是Python启动后就加载在内存中。
每当程序员导入新的模块,sys.modules
将自动记录该模块。
当第二次再导入该模块时,python会直接到字典中查找,从而加快了程序运行的速度。
sys.path
获取指定模块搜索路径的列表,当在程序中使用 import
关键字引入一个模块时,
解释器会按照一定的顺序来查找这个模块。
当前目录:
- 如果不在当前目录,Python 则搜索在
shell
变量PYTHONPATH
下的每个目录。 - 如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为
/usr/local/lib/python/
。 - 模块搜索路径存储在 system 模块的
sys.path
变量中。变量里包含当前目录,PYTHONPATH
和由安装过程决定的默认目录。
sys.exit(n)
程序执行到代码末尾,解释器会自动退出,如果希望中途退出程序,
可以使用 sys.exit()
方法,n可以传入一个整数,
可以在主程序中捕获对 sys.exit()
的调用并获得这个n,一般0表示正常退出,其他为异常。
import sys
def test():
sys.exit(3)
try:
test()
except SystemExit as e:
print(e)
3
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
是一个列表,包含了脚本的名称后紧跟在脚本后面的参数。