WMX · 随记
·Python· 3 分钟阅读

临时目录:给一次任务一个明确的文件生命周期

把临时文件统一写成 /tmp/result.txt,多个任务会互相覆盖,异常退出还会留下垃圾。独立临时目录可以减少名称冲突并集中清理。

Python 系列概览:输入校验、数据处理与行为验证
Python 系列概览:输入校验、数据处理与行为验证 点击图片查看大图 ↗

问题从哪里出现

把临时文件统一写成 /tmp/result.txt,多个任务会互相覆盖,异常退出还会留下垃圾。独立临时目录可以减少名称冲突并集中清理。

理解核心机制

TemporaryDirectory 创建唯一目录,并在上下文退出时递归清理。把任务的中间文件都放在该目录下,可以让正常与异常路径共享清理逻辑。

动手做一个小实验

Python 3.11 或更新版本,仅使用标准库;将示例保存为 demo.py 后执行 python3 demo.py。

Python9 行 · 可横向滚动
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 的清理代码不保证执行。需要长期保留的结果应在成功后移到正式位置,并注意跨文件系统移动的语义。

继续练习

在写文件后主动抛异常,确认上下文退出仍清理目录;再设计失败时保留诊断文件的显式开关。

参考资料

阅读相关官方文档或原始资料 ↗

← 返回文章归档