引言:
代码演示了如何使用 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()