py sys库

晨曦

导入 sys 模块

要使用 sys 模块中的功能,首先需要导入它:

import sys

常用功能

1. 访问命令行参数

sys.argv 是一个列表,包含了命令行参数。sys.argv[0] 是脚本的名称,sys.argv[1:] 是传递给脚本的参数。

import sys

print("Script name:", sys.argv[0])
for i, arg in enumerate(sys.argv[1:], start=1):
print(f"Argument {i}: {arg}")

如果你运行 python script.py arg1 arg2,输出将会是:

Script name: script.py
Argument 1: arg1
Argument 2: arg2

2. 标准输入输出和错误

sys 模块提供了三个与标准流相关的变量:sys.stdin(标准输入)、sys.stdout(标准输出)和 sys.stderr(标准错误)。你可以重定向这些流或者替换它们。

例如,将标准输出重定向到一个文件:

import sys

with open('output.txt', 'w') as f:
sys.stdout = f
print("This will be written to output.txt")
sys.stdout = sys.__stdout__ # 恢复原来的标准输出

3. 退出程序

sys.exit([arg]) 函数用于退出当前程序。如果提供了一个参数,则会被作为程序的退出状态码(0 表示成功,非0 表示失败)。

import sys

if some_error_condition:
sys.exit(1) # 非零值表示错误
else:
sys.exit(0) # 零值表示成功

你也可以直接调用 sys.exit() 而不带参数,这等价于 sys.exit(0)

4. 最大递归深度

sys.setrecursionlimit(limit) 函数允许你设置 Python 解释器的最大递归深度。默认深度通常是 1000,但这个值可以根据需要进行调整。不过,增加递归深度可能会导致栈溢出错误。

import sys

# 设置最大递归深度为 2000
sys.setrecursionlimit(2000)

5. Python 版本信息

sys.versionsys.version_info 提供了关于 Python 解释器版本的信息。sys.version 是一个字符串,而 sys.version_info 是一个命名元组,提供了更结构化的访问方式。

import sys

print("Python version (string):", sys.version)
print("Python version (info):", sys.version_info)

其他功能

  • sys.path:一个列表,包含了模块搜索路径的字符串。你可以通过修改这个列表来影响模块的导入行为。
  • sys.modules:一个字典,包含了所有已导入的模块。键是模块名,值是模块对象。
  • sys.platform:一个字符串,表示运行 Python 解释器的操作系统平台。
  • sys.getsizeof(object):返回对象所占用的内存大小(以字节为单位),不包括对象引用的其他对象。
  • sys.settrace(tracefunc)sys.gettrace():用于设置或获取全局跟踪函数,这通常用于调试目的。
  • 标题: py sys库
  • 作者: 晨曦
  • 创建于 : 2024-11-30 23:34:53
  • 更新于 : 2025-01-14 03:24:47
  • 链接: https://blog.starlit.icu/2024/11/30/python/py-sys/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论