文章目录
- sys.argv 是一个列表,包含脚本名称和命令行参数。 以下示例展示如何解析命令行输入: import sys if len(sys.argv) > 1: print(f”脚本名: {sys.argv[0]}, 参数: {sys.argv[1:]}”) else: print(“未提供命令行参数”) 运行方式: python script.py arg1 arg2
- sys.path 是 Python 的模块搜索路径列表,可通过修改它添加自定义路径: import sys sys.path.append(‘/custom/module/path’) print(sys.path) # 查看当前搜索路径
- sys.exit() 可立即终止脚本,支持返回状态码: import sys if some_error_condition: sys.exit(“错误: 条件不满足”) # 退出并打印消息 else: sys.exit(0) # 正常退出
- 通过 sys.stdin、sys.stdout 和 sys.stderr 可重定向 I/O: import sys sys.stdout = open(‘output.log’, ‘w’) # 输出重定向到文件 print(“这条消息会写入文件”)
- sys.version 和 sys.platform 分别返回 Python 版本和操作系统类型: import sys print(f”Python版本: {sys.version.split()[0]}”) print(f”运行平台: {sys.platform}”)
- sys.setrecursionlimit() 可调整递归最大深度(默认 1000): import sys sys.setrecursionlimit(2000) # 提高递归限制
- sys.getsizeof() 返回对象占用的内存字节数: import sys data = [x for x in range(1000)] print(f”列表占用内存: {sys.getsizeof(data)} 字节”)
- sys.excepthook 可自定义未捕获异常的处理器: import sys def custom_hook(exctype, value, traceback): print(f”异常类型: {exctype.__name__}, 错误: {value}”) sys.excepthook = custom_hook raise ValueError(“自定义异常处理演示”)
目录
- Python sys 模块详解
- 常用功能与代码示例
- 获取命令行参数
- 修改模块搜索路径
- 强制退出程序
- 标准输入/输出重定向
- 获取系统信息
- 高级应用场景
- 递归深度控制
- 内存管理
- 异常处理钩子
- 实际工程示例
- 动态加载模块
- 性能分析
- 注意事项
- 总结
sys 模块是 Python 标准库中与解释器交互的核心模块,提供了访问和操作 Python 运行时环境的变量和函数。
以下从常用功能、实际应用场景及代码示例展开说明。
sys.argv 是一个列表,包含脚本名称和命令行参数。
以下示例展示如何解析命令行输入:
import sys
if len(sys.argv) > 1:
print(f"脚本名: {sys.argv[0]}, 参数: {sys.argv[1:]}")
else:
print("未提供命令行参数")
运行方式:
python script.py arg1 arg2
sys.path 是 Python 的模块搜索路径列表,可通过修改它添加自定义路径:
import sys
sys.path.append('/custom/module/path')
print(sys.path) # 查看当前搜索路径
sys.exit() 可立即终止脚本,支持返回状态码:
import sys
if some_error_condition:
sys.exit("错误: 条件不满足") # 退出并打印消息
else:
sys.exit(0) # 正常退出
通过 sys.stdin、sys.stdout 和 sys.stderr 可重定向 I/O:
import sys
sys.stdout = open('output.log', 'w') # 输出重定向到文件
print("这条消息会写入文件")
sys.version 和 sys.platform 分别返回 Python 版本和操作系统类型:
import sys
print(f"Python版本: {sys.version.split()[0]}")
print(f"运行平台: {sys.platform}")
sys.setrecursionlimit() 可调整递归最大深度(默认 1000):
import sys sys.setrecursionlimit(2000) # 提高递归限制
sys.getsizeof() 返回对象占用的内存字节数:
import sys
data = [x for x in range(1000)]
print(f"列表占用内存: {sys.getsizeof(data)} 字节")
sys.excepthook 可自定义未捕获异常的处理器:
import sys
def custom_hook(exctype, value, traceback):
print(f"异常类型: {exctype.__name__}, 错误: {value}")
sys.excepthook = custom_hook
raise ValueError("自定义异常处理演示")
结合 sys.modules 检查模块是否已加载:
import sys
if 'numpy' not in sys.modules:
import numpy as np
print("NumPy 已动态加载")
通过 sys.getrefcount() 查看对象引用计数(注意返回值比实际多1):
import sys
a = [1, 2, 3]
print(f"引用计数: {sys.getrefcount(a)}") # 通常为2(a + getrefcount参数)
- 修改
sys.path 可能导致模块冲突,建议优先使用虚拟环境。
sys.exit() 会触发 SystemExit 异常,可在 finally 块中执行清理操作。
- 递归深度限制过高可能导致栈溢出,需谨慎调整。
sys.path 可能导致模块冲突,建议优先使用虚拟环境。sys.exit() 会触发 SystemExit 异常,可在 finally 块中执行清理操作。通过灵活运用 sys 模块的功能,可以实现对 Python 运行时环境的精细控制,尤其在脚本开发、调试和系统级编程中极为实用。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持风君子博客。
您可能感兴趣的文章:
- Python使用sys.path查看当前的模块搜索路径
- python sys模块及常用功能
- 深入详解Python中sys模块的功能与应用
- Python中sys模块常用方法与变量实例探究
- Python sys模块中maxsize()方法教程示例
- Python标准库之sys模块用法详解