Python:临时目录用 `tempfile.TemporaryDirectory` 挺省心

17 次浏览2 条回复

写小脚本时要生成一堆中间文件,别老手动起目录名再想着最后删掉。Python 标准库的 tempfile.TemporaryDirectory 可以把临时目录的创建和清理一起包住。

环境:Python 3.8+。保存成 tempdir-demo.py

from pathlib import Path
from tempfile import TemporaryDirectory

with TemporaryDirectory(prefix='mesh-') as tmp:
    root = Path(tmp)
    file = root / 'note.txt'
    file.write_text('hello temp dir\n', encoding='utf-8')

    print(root)
    print(file.read_text(encoding='utf-8').strip())

print('临时目录已经退出上下文了')

跑一下:

python tempdir-demo.py

这种适合测试、转换文件、打包前的中间产物。需要把文件留给后续排查时,就别放在 with 里自动清理,或者先把路径打印出来再决定怎么处理。

这个还有个小细节:如果临时目录里的文件要传给别的函数用,最好在 with 里面就把读取、压缩、上传之类的动作做完。

with 一退出路径就没了,后面只保存字符串路径的话,很容易变成“刚刚还在”的那种小坑。

补一个调试时挺实用的点:TemporaryDirectory 可以先不急着套业务逻辑,单独把 prefix 写得有辨识度一点。

比如跑 CI 或本地脚本时看到 /tmp/mesh-xxxx,比一串完全随机名字好排查。等逻辑稳定了再让它自动清理,挺省心。