sys
提供了与 Python 解释器交互的功能,常用于处理命令行参数、修改模块搜索路径、控制标准输入输出等。
sys.argv
)sys.argv
是一个列表,存储 Python 脚本运行时的命令行参数:
pythonimport sys
print("脚本名称:", sys.argv[0]) # sys.argv[0] 是脚本文件名
if len(sys.argv) > 1:
print("传入的参数:", sys.argv[1:])
运行示例:
shpython script.py arg1 arg2
输出:
脚本名称: script.py 传入的参数: ['arg1', 'arg2']
sys.exit()
)可以用 sys.exit(code)
退出 Python 程序,code=0
代表正常退出,非零表示异常:
pythonimport sys
print("程序开始")
sys.exit(0) # 退出程序
print("这行不会执行")
sys.version
)pythonimport sys
print("Python 版本:", sys.version)
print("Python 版本信息:", sys.version_info) # 以元组形式存储详细版本信息
输出示例:
Python 版本: 3.10.6 (main, Aug 3 2022, 16:00:00) [GCC 9.4.0] Python 版本信息: sys.version_info(major=3, minor=10, micro=6, releaselevel='final', serial=0)
sys.executable
)pythonimport sys
print("Python 解释器路径:", sys.executable)
输出示例:
Python 解释器路径: /usr/bin/python3
sys.path
)sys.path
是一个列表,包含 Python 解释器查找模块的目录:
pythonimport sys
print("默认的模块搜索路径:", sys.path)
# 添加自定义路径
sys.path.append('/my/custom/path')
print("修改后的模块搜索路径:", sys.path)
sys.platform
)pythonimport sys
print("当前操作系统:", sys.platform)
可能的输出:
"win32"
"darwin"
"linux"
sys.getrecursionlimit()
)Python 默认的最大递归深度约为 1000,可以修改:
pythonimport sys
print("默认递归深度:", sys.getrecursionlimit())
sys.setrecursionlimit(2000) # 修改递归深度
print("修改后的递归深度:", sys.getrecursionlimit())
sys.stdin.read()
)pythonimport sys
print("请输入一些内容:")
data = sys.stdin.read()
print("你输入的是:", data)
这个适用于从终端或管道输入数据,比如:
shecho "Hello, World!" | python script.py
sys.stdout
)可以重定向 sys.stdout
,比如把 print
结果写入文件:
pythonimport sys
with open("output.txt", "w") as f:
sys.stdout = f
print("这句话会被写入文件,而不会出现在终端")
sys.stdout = sys.__stdout__ # 恢复标准输出
print("正常输出到终端")
方法 | 作用 |
---|---|
sys.argv | 获取命令行参数 |
sys.exit(code) | 退出程序 |
sys.version | 获取 Python 版本 |
sys.executable | 获取 Python 解释器路径 |
sys.platform | 获取操作系统类型 |
sys.path | 获取/修改模块搜索路径 |
sys.getrecursionlimit() | 获取最大递归深度 |
sys.setrecursionlimit(n) | 设置最大递归深度 |
sys.stdin.read() | 读取标准输入 |
sys.stdout | 修改标准输出 |