云计算百科
云计算领域专业知识百科平台

Python 库手册:sys 解释器交互模块

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)。

图片

“点赞有美意,赞赏是鼓励”

赞(0)
未经允许不得转载:网硕互联帮助中心 » Python 库手册:sys 解释器交互模块
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!