sys
是 Python 标准库中的一个内置模块,它提供了许多与 Python 解释器和系统环境进行交互的功能。
sys
模块在使用 sys
库的功能之前,需要先导入它:
import sys
sys.argv
)sys.argv
是一个包含命令行参数的列表。其中,sys.argv[0]
是脚本的名称,后续的元素是传递给脚本的参数。
import sys
# 打印脚本名称
print(f"脚本名称: {sys.argv[0]}")
# 打印所有命令行参数
for i, arg in enumerate(sys.argv):
print(f"参数 {i}: {arg}")
假设将上述代码保存为 test.py
,在命令行中运行 python test.py arg1 arg2
,输出结果将显示脚本名称和传递的参数。
sys.version
sys.version
是一个字符串,包含了 Python 解释器的版本信息,如 Python 版本号、编译信息等。
import sys
print(sys.version)
sys.version_info
sys.version_info
是一个 namedtuple
,包含了 Python 版本的主要信息,如主版本号、次版本号、微版本号等。
import sys
print(sys.version_info)
print(f"主版本号: {sys.version_info.major}")
print(f"次版本号: {sys.version_info.minor}")
sys.path
)sys.path
是一个包含模块搜索路径的列表。Python 在导入模块时,会按照这个列表中的路径顺序进行搜索。
import sys
# 打印系统路径
for path in sys.path:
print(path)
# 可以动态添加路径
sys.path.append('/path/to/your/module')
sys.exit()
)sys.exit()
函数用于退出 Python 解释器。可以传递一个整数参数作为退出状态码,默认状态码为 0 表示正常退出。
import sys
try:
# 一些代码逻辑
result = 1 / 0 # 模拟异常
except ZeroDivisionError:
print("发生除零错误,程序退出")
sys.exit(1) # 以状态码 1 退出
sys
模块提供了对标准输入 (sys.stdin
)、标准输出 (sys.stdout
) 和标准错误 (sys.stderr
) 的访问。
import sys
# 保存原始的标准输出
original_stdout = sys.stdout
# 打开一个文件以写入模式
with open('output.txt', 'w') as f:
# 将标准输出重定向到文件
sys.stdout = f
print("这行文本将被写入文件")
# 恢复标准输出
sys.stdout = original_stdout
print("这行文本将显示在控制台")
import sys
# 从标准输入读取一行
line = sys.stdin.readline()
print(f"你输入的内容是: {line.strip()}")
sys.getrecursionlimit()
和 sys.setrecursionlimit()
)Python 解释器对递归调用的深度有一个默认限制,以防止无限递归导致栈溢出。可以使用 sys.getrecursionlimit()
获取当前的递归深度限制,使用 sys.setrecursionlimit()
设置新的递归深度限制。
import sys
# 获取当前递归深度限制
current_limit = sys.getrecursionlimit()
print(f"当前递归深度限制: {current_limit}")
# 设置新的递归深度限制
sys.setrecursionlimit(2000)
new_limit = sys.getrecursionlimit()
print(f"新的递归深度限制: {new_limit}")
sys.platform
)sys.platform
是一个字符串,用于标识当前 Python 解释器运行的操作系统平台。
import sys
print(f"当前操作系统平台: {sys.platform}")
常见的平台标识符包括 'win32'
(Windows)、'linux'
(Linux)、'darwin'
(macOS)等。
sys.maxsize
)sys.maxsize
表示当前平台上 Python 解释器所能表示的最大整数值。
import sys
print(f"最大整数值: {sys.maxsize}")
sys.builtin_module_names
)sys.builtin_module_names
是一个包含所有内置模块名称的元组。
import sys
print("所有内置模块名称:")
for module_name in sys.builtin_module_names:
print(module_name)
sys.getsizeof()
)sys.getsizeof()
函数用于返回对象占用的内存大小(以字节为单位)。
import sys
my_list = [1, 2, 3, 4, 5]
list_size = sys.getsizeof(my_list)
print(f"列表占用的内存大小: {list_size} 字节")