Python:tempfile.mkdtemp和tempfile.TemporaryDirectory的区别

11 投票
2 回答
6211 浏览
提问于 2025-04-16 18:19

我需要创建一个临时目录,这个目录里会放一个命名的文件夹和一些子文件。最后,我会把这个命名的文件夹和子文件打包成一个压缩文件,然后可以删除这个临时目录。最开始我打算用 mkdtemp(),但我发现 TemporaryDirectory() 这个方法似乎会自己删除?能不能有人解释一下这两者的区别。

2 个回答

6

根据tempfile.TemporaryDirectory()的文档:

这个函数会创建一个临时目录,使用的是mkdtemp()这个方法(你传入的参数会直接传给这个方法)。创建出来的对象可以当作上下文管理器来使用(具体可以看看“with语句和上下文管理器”)。当你完成这个上下文的使用(或者临时目录对象被销毁时),新创建的临时目录和里面的所有内容都会从文件系统中删除。

11

你说得对,唯一真正的区别就是 TemporaryDirectory 在用完后会自己删除。它让你可以这样做:

with tempfile.TemporaryDirectory() as dir:
   do_stuff_with(dir)

当你离开 with 的范围时,临时目录会被删除。而使用 mkdtemp 的话,你就需要手动去删除它。

撰写回答