Python:tempfile.mkdtemp和tempfile.TemporaryDirectory的区别
我需要创建一个临时目录,这个目录里会放一个命名的文件夹和一些子文件。最后,我会把这个命名的文件夹和子文件打包成一个压缩文件,然后可以删除这个临时目录。最开始我打算用 mkdtemp()
,但我发现 TemporaryDirectory()
这个方法似乎会自己删除?能不能有人解释一下这两者的区别。
2 个回答
6
根据tempfile.TemporaryDirectory()的文档:
这个函数会创建一个临时目录,使用的是mkdtemp()这个方法(你传入的参数会直接传给这个方法)。创建出来的对象可以当作上下文管理器来使用(具体可以看看“with语句和上下文管理器”)。当你完成这个上下文的使用(或者临时目录对象被销毁时),新创建的临时目录和里面的所有内容都会从文件系统中删除。
11
你说得对,唯一真正的区别就是 TemporaryDirectory
在用完后会自己删除。它让你可以这样做:
with tempfile.TemporaryDirectory() as dir:
do_stuff_with(dir)
当你离开 with
的范围时,临时目录会被删除。而使用 mkdtemp
的话,你就需要手动去删除它。