Python:临时试代码时,`TemporaryDirectory` 比手写删目录省心

29 次浏览3 条回复

有些小脚本就想落几个临时文件,跑完自动清掉就行。tempfile.TemporaryDirectory() 这时候挺顺手。

环境:Python 3.10+,只用标准库。保存为 tmpdir-demo.py:

from pathlib import Path
from tempfile import TemporaryDirectory

with TemporaryDirectory() as tmp:
    root = Path(tmp)
    note = root / 'note.txt'
    note.write_text('hello tmp', encoding='utf-8')

    print(note.read_text(encoding='utf-8'))
    print(sorted(p.name for p in root.iterdir()))

print('done')

跑完目录会自己没掉,省得后面忘了清。

这个挺适合那种‘跑完就丢’的小脚本。

要是后面还要接着处理某个结果,记得把要保留的文件在 with 里先挪出去;出了块儿目录就自动清掉了,挺省心,也挺容易忘。

还有个小用法:可以给 TemporaryDirectory(prefix="demo-") 加个前缀。

调试时临时目录名会好认一点,真要临时看一眼路径,也可以在 with 里面 print(root)。不过文件要留存的话还是得先拷出去,出了作用域就没了。

顺手再补一句:它当上下文管理器用的时候,哪怕中途报错,退出时也会自动清理掉,不用自己再补一层 try/finally。这种小脚本里挺省心的。