sys 模块是 Python 内置的标准库之一,用于访问与 Python 解释器紧密相关的变量与函数,包括系统参数、标准输入输出、模块路径、异常信息、解释器控制等。它是许多命令行工具、调试器、解释器级扩展程序的基础工具。
常见应用场景:
(1)获取命令行参数。
(2)控制程序的退出与退出码。
(3)修改模块导入路径。
(4)捕获异常信息。
(5)操作标准输入输出流。
(6)检查 Python 解释器及平台信息
◆ ◆ ◆
核心概念
1、sys 模块面向 Python 解释器本身,而非操作系统(与 os 区分)。
2、可以读取、修改标准流,如 sys.stdin、sys.stdout。
3、提供对运行参数(如命令行参数、版本、平台)和解释器配置的访问。
4、可搭配 traceback 模块分析异常栈信息。
5、是构建命令行工具、嵌入 Python 执行环境的常用接口。
◆ ◆ ◆
应用举例
例 1:获取命令行参数列表
import sys
print("命令行参数:", sys.argv)
说明:
sys.argv 是包含所有参数的列表,第 0 个元素是脚本本身路径。
例 2:强制退出程序
import sys
if True: print("遇到错误,立即退出") sys.exit(1) # 退出码 1 表示异常退出
例 3:打印 Python 解释器信息
import sys
print("当前 Python 版本:", sys.version)print("解释器平台:", sys.platform)
例 4:添加模块搜索路径
import sys
sys.path.append('/my/custom/path')
说明:
通过修改 sys.path,可以手动添加导入模块时查找的目录。
例 5:重定向标准输出
import sys
with open('log.txt', 'w') as f: sys.stdout = f print("这行将被写入文件而不是终端")
sys.stdout = sys.__stdout__ # 恢复标准输出
◆ ◆ ◆
常用方法速览
sys.argv
以列表形式返回命令行参数。
返回:列表,包含字符串形式的参数
sys.exit([code])
退出 Python 程序并返回退出码(默认 0 表示正常)。
参数:
code:整数或字符串,通常为 0(正常)或非 0(异常)
返回:None(实际不会返回,程序会终止)
sys.getdefaultencoding()
返回当前的默认字符串编码方式。
参数:无
返回:字符串,如 'utf-8'
sys.getrecursionlimit()
获取当前的递归调用深度限制。
参数:无
返回:int,默认约为 1000
sys.getsizeof(object[, default])
返回对象占用的字节大小。
参数:
object:任意 Python 对象
default:可选,若对象不支持大小测量,则返回该值
返回:整数(字节数)
sys.modules
记录已加载的模块字典(模块名为键)。
返回:dict,可用于检测模块是否已加载、卸载模块等操作
sys.path
模块查找路径列表,可读写。
返回:list,表示导入模块时搜索路径顺序
sys.platform
返回当前操作系统平台标识。
返回:str,如 'win32'、'linux'、'darwin'(macOS)
sys.setrecursionlimit(limit)
设置递归调用的最大深度(需谨慎使用)。
参数:
limit:int,新递归限制值
返回:None
sys.stdin / sys.stdout / sys.stderr
标准输入、输出、错误流对象,可重定向。
返回:文件类对象(支持 .read()、.write() 等方法)
sys.version
返回当前 Python 的版本字符串。
返回:str,例如 '3.11.4 (main, Jul 2 2025, 10:00:00)'
◆ ◆ ◆
补充说明
1、在调试器和 REPL 中运行的脚本可能没有 __file__,需小心使用。
2、sys 与 os 模块的分工为:“sys 管解释器,os 管系统”。
3、不建议随意修改 sys.path,推荐使用虚拟环境和模块管理工具(如 pip)。
“点赞有美意,赞赏是鼓励”
评论前必须登录!
注册