【python 内置模块】sys

2024-01-20 00:00:00

目录:

sys 模块提供了与 Python 解释器及其环境交互的功能,允许开发者访问解释器维护的变量,并与解释器进行深度交互。

处理命令行参数

sys.argv 是一个列表对象,存储命令行调用 Python 脚本时提供的参数。列表的第一个元素是脚本名称,后续元素是传入的参数。

import sys

# 打印所有命令行参数
print("脚本名称:", sys.argv) # ['./test.py', 'aa', 'bb', 'cc']
print("参数列表:", sys.argv[1:]) # ['aa', 'bb', 'cc']
print("参数总数:", len(sys.argv) - 1) # 3

# 遍历参数
for i, arg in enumerate(sys.argv):
    print(f"参数{i}: {arg}")

示例:

$ python3 test.py aa bb cc

系统平台信息

sys.platform 提供当前执行环境的平台信息,如 ‘win32’ 表示 Windows 系统,’linux’ 表示 Linux 系统,’darwin’ 表示 MacOS 系统。

import sys

platform = sys.platform
print(f"当前平台: {platform}")

if platform == 'win32':
    print("运行在Windows系统")
elif platform == 'linux':
    print("运行在Linux系统")
elif platform == 'darwin':
    print("运行在macOS系统")

模块搜索路径

sys.path 是一个字符串列表,指定了 Python 搜索模块的路径。程序启动时从环境变量初始化,第一个元素是调用解释器的脚本所在路径。

import sys

# 查看当前搜索路径
print("模块搜索路径:")
for path in sys.path:
    print(f"  {path}")

# 添加自定义路径
sys.path.append('/my/custom/module/path')
sys.path.insert(0, '/another/path')  # 插入到最前面

# 查看当前搜索路径
print("模块搜索路径:")
for path in sys.path:
    print(f"  {path}")

标准输入输出

print() 函数默认将输出写入标准输出(sys.stdout),如下示例,可以将文件对象赋值给 sys.stdout,这样 print() 输出就会写入文件中。记得保存原值以便恢复。

import sys

# 重定向标准输出到文件
original_stdout = sys.stdout
with open('output.log', 'w') as f:
    sys.stdout = f
    print("这条消息会写入文件")
    print("不会显示在终端")
sys.stdout = original_stdout  # 恢复原状

# 从文件读取输入
with open('input.txt', 'r') as f:
    sys.stdin = f
    data = input()  # 从文件读取而不是键盘
    print(f"从文件读取: {data}")

程序退出

sys.exit() 函数用于终止程序执行,可以指定退出码(0 表示正常退出,非 0 表示异常)。

import sys

def process_data(data):
    if not data:
        print("错误:数据为空")
        sys.exit(1)  # 异常退出
    # 正常处理数据
    print(f"处理数据: {data}")
    sys.exit(0)  # 正常退出

# 捕获退出
try:
    process_data("")
except SystemExit as e:
    print(f"程序退出,代码: {e.code}")
查看 python 版本

sys.version 提供 Python 解释器的版本信息字符串。

import sys

print(f"Python版本: {sys.version}")

返回首页

本文总阅读量  次
皖ICP备17026209号-3
总访问量: 
总访客量: