临时目录:给一次任务一个明确的文件生命周期
把临时文件统一写成 /tmp/result.txt,多个任务会互相覆盖,异常退出还会留下垃圾。独立临时目录可以减少名称冲突并集中清理。
问题从哪里出现
把临时文件统一写成 /tmp/result.txt,多个任务会互相覆盖,异常退出还会留下垃圾。独立临时目录可以减少名称冲突并集中清理。
理解核心机制
TemporaryDirectory 创建唯一目录,并在上下文退出时递归清理。把任务的中间文件都放在该目录下,可以让正常与异常路径共享清理逻辑。
动手做一个小实验
Python 3.11 或更新版本,仅使用标准库;将示例保存为 demo.py 后执行 python3 demo.py。
from pathlib import Path
from tempfile import TemporaryDirectory
with TemporaryDirectory(prefix="blog-demo-") as directory:
path = Path(directory) / "result.txt"
path.write_text("你好", encoding="utf-8")
assert path.read_text(encoding="utf-8") == "你好"
saved_path = path
assert not saved_path.exists()
print("temporary files cleaned")适用边界与常见误区
进程被强制终止时,Python 的清理代码不保证执行。需要长期保留的结果应在成功后移到正式位置,并注意跨文件系统移动的语义。
继续练习
在写文件后主动抛异常,确认上下文退出仍清理目录;再设计失败时保留诊断文件的显式开关。