边走边聊 Python 3.8:Chapter 6:文件与异常:Win7 下的存档与救命
Chapter 6:文件与异常:Win7 下的存档与救命程序需要保存数据,也需要在错误发生时保持稳定。本章将带你掌握文件读写、路径处理、异常捕获、资源管理等关键能力,并结合 Win7 的特殊环境讲解常见坑点。你会学会如何让程序“记住事情”,也学会如何让程序在错误面前不崩溃。“程序的记忆在文件里,程序的韧性在异常里。”文件操作 + 异常处理是 Python 3.8 在 Windows 7 下最常用的“存档”与“救命”组合。前面我们学过的迭代器、生成器、函数、类,现在全部可以封装成自动整理文件的工具。本篇全部使用标准库(pathlib、os、json、shutil),无需任何 pip 安装,在 Win7 + Python 3.8 上直接运行。1. open() 上下文管理器、with 语句# 传统写法(容易忘记关闭)f=open('test.txt','w',encoding='utf-8')f.write('Win7 测试')f.close()# 容易漏掉!# 推荐写法(with 自动关闭)withopen('test.txt','w',encoding='utf-8')asf:f.write('Win7 测试\n第二行')# 离开 with 块时,文件句柄自动关闭,即使发生异常也关闭底层原理:with语句调用对象的__enter__和__exit__方法(上下文协议)。open()返回的_io.TextIOWrapper对象实现了这两个魔术方法,__exit__里会调用close()。2. pathlib(3.4+ 强烈推荐) vs os.pathPython 3.8 强烈推荐pathlib—— 面向对象的路径操作,比os.path更现代、更安全。frompathlibimportPathimportos# pathlib(推荐)desktop=Path.home()/"Desktop"# Win7 中文用户名也完全兼容downloads=Path.home()/"Downloads"new_folder=desktop/"整理后_图片"new_folder.mkdir(exist_ok=True)# 自动创建文件夹# os.path(旧式,兼容老代码)old_desktop=os.path.join(os.path.expanduser("~"),"Desktop")print(old_desktop)对比总结:pathlib:链式操作、跨平台、支持/运算符、更少的字符串拼接错误。os.path:老项目常用,Win7 下偶尔遇到中文路径编码问题。Win7 实战建议:新代码一律用pathlib,老代码逐步替换。3. try/except/else/finally + 自定义异常classFileOrganizerError(Exception):"""自定义文件整理异常"""passdefsafe_move(src