Python 中常用的标准库系列之 sys 模块

在 Python 中,sys 模块提供了许多与 Python 解释器和系统环境相关的功能。以下是一些 sys 模块的常用功能和示例:

  1. 命令行参数:通过 sys.argv 获取命令行参数,返回一个列表,第一个元素是脚本名。

    python

    import sys
    
    if __name__ == "__main__":
        print(f"脚本名: {sys.argv[0]}")
        print(f"参数个数: {len(sys.argv) - 1}")
        print(f"参数列表: {sys.argv[1:]}")
    
  2. Python 解释器信息:获取 Python 版本、路径等信息。

    python

    import sys
    
    print(f"Python 版本: {sys.version}")
    print(f"Python 解释器路径: {sys.executable}")
    
  3. 标准输入 / 输出 / 错误:重定向标准输入输出,操作 sys.stdinsys.stdoutsys.stderr

    python

    import sys
    
    # 保存原始输出
    original_stdout = sys.stdout
    
    # 重定向输出到文件
    with open('output.txt', 'w') as f:
        sys.stdout = f
        print("这条信息会被写入文件")
    
    # 恢复原始输出
    sys.stdout = original_stdout
    print("这条信息会显示在控制台")
    
  4. 退出程序:使用 sys.exit() 提前终止程序,可指定退出码(0 表示正常退出,非零表示异常)。

    python

    import sys
    
    def check_number(n):
        if n < 0:
            sys.exit("错误:数字不能为负数")
        return n * 2
    
    try:
        num = int(input("请输入一个数字:"))
        result = check_number(num)
        print(f"结果: {result}")
    except ValueError:
        sys.exit("错误:请输入有效的整数")
    
  5. 模块搜索路径:查看和修改 Python 模块的搜索路径 sys.path

    python

    import sys
    
    # 查看模块搜索路径
    print("模块搜索路径:")
    for path in sys.path:
        print(path)
    
    # 临时添加自定义模块路径
    sys.path.append('/path/to/your/modules')
    
  6. 递归深度限制:获取和设置 Python 解释器的递归最大深度 sys.getrecursionlimit() 和 sys.setrecursionlimit()

    python

    import sys
    
    print(f"默认递归深度限制: {sys.getrecursionlimit()}")
    
    # 设置新的递归深度限制
    sys.setrecursionlimit(2000)
    print(f"新的递归深度限制: {sys.getrecursionlimit()}")
    
  7. 异常处理钩子:通过 sys.excepthook 自定义全局异常处理。

    python

    import sys
    
    def custom_exception_handler(exc_type, exc_value, exc_traceback):
        print("捕获到异常:")
        print(f"类型: {exc_type}")
        print(f"值: {exc_value}")
        # 可以选择不打印堆栈信息或记录到日志
    
    # 设置自定义异常处理
    sys.excepthook = custom_exception_handler
    
    # 触发异常
    result = 1 / 0  # 这将调用自定义异常处理
    

  8. 平台信息:通过 sys.platform 获取运行平台信息。

    python

    import sys
    
    print(f"当前平台: {sys.platform}")
    
    if sys.platform.startswith('win'):
        print("这是 Windows 系统")
    elif sys.platform.startswith('linux'):
        print("这是 Linux 系统")
    elif sys.platform == 'darwin':
        print("这是 macOS 系统")
    

sys 模块是 Python 标准库中非常基础且重要的模块,提供了与解释器和系统交互的核心功能。以上只是一些常见用法,实际使用中还可以根据需求探索更多功能。

你可能感兴趣的:(Python,进阶应用教程,python,开发语言,前端)