程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

Python 中sys 模块深度解析:优化代码、调试异常与动态执行

hfteth 2025-01-26 22:31:50 技术文章 13 ℃

引言:

代码演示了如何使用 sys 模块来进行系统操作和调试,并结合 Python 内置的异常处理机制、内存管理工具和动态代码执行来解决实际开发中的一些常见问题。

import sys
import os
import math

#todo 获取命令行参数并进行检查
def handle_command_line_args():
    args = sys.argv
    if len(args) < 2:
        print("错误:缺少参数")
        sys.exit(1)  #todo 非正常退出,退出状态码为 1
    print("命令行参数:", args)

#todo 显示模块搜索路径
def show_module_search_path():
    print("模块搜索路径:", sys.path)

#todo 输出至标准输出流
def write_to_stdout():
    sys.stdout.write("Hello, World!\n")

#todo 获取系统平台和Python版本信息
def show_platform_and_version():
    print("当前平台:", sys.platform)
    print("Python版本:", sys.version)

#todo 查看对象的内存大小
def check_memory_usage():
    my_list = [1, 2, 3, 4, 5]
    print("列表对象的内存大小:", sys.getsizeof(my_list))

#todo 获取当前异常的信息
def show_exception_info():
    try:
        1 / 0  #todo 故意引发异常
    except Exception as e:
        exc_type, exc_value, traceback = sys.exc_info()
        print(f"异常类型: {exc_type}")
        print(f"异常值: {exc_value}")
        print(f"追溯信息: {traceback}")

#todo 获取对象的引用计数
def check_refcount():
    x = []
    y = x
    print("x的引用计数:", sys.getrefcount(x))

#todo 重定向标准输出
def redirect_stdout():
    with open("output.txt", "w") as f:
        sys.stdout = f
        print("这条消息会被重定向到output.txt文件")
    #todo 重定向结束后恢复标准输出
    sys.stdout = sys.__stdout__

#todo 执行动态代码字符串
def execute_dynamic_code():
    code_str = """
x = 5
y = 10
print(x + y)
"""
    exec(code_str)

#todo 修改已导入模块的属性
def modify_imported_module():
    print("修改前的math.pi:", math.pi)
    sys.modules['math'].pi = 3.14
    print("修改后的math.pi:", math.pi)

#todo 主程序入口
def main():
    handle_command_line_args()
    show_module_search_path()
    write_to_stdout()
    show_platform_and_version()
    check_memory_usage()
    show_exception_info()
    check_refcount()
    redirect_stdout()
    execute_dynamic_code()
    modify_imported_module()

if __name__ == "__main__":
    main()

Tags:

最近发表
标签列表