删除临时文件的最佳方法是什么?它有内置的方法吗?例如:
self.tempdir = tempfile.mkdtemp()
rm self.tempdir ?
答案 0 :(得分:4)
删除临时目录与删除任何其他目录相同:如果您确定已将其清空,请致电os.rmdir
(并考虑一下)如果它不为空则出错,或者如果没有则为shutil.rmtree
。
如果您使用的是3.2或更高版本,则使用TemporaryDirectory
而不是mkdtemp
创建临时目录要简单得多。它以一种很好的跨平台方式处理所有繁琐的边缘情况,因此您不必担心它们。 (如果您正在创建临时文件,正如您的问题标题所示,使用更高级别的API(例如TemporaryFile
或NamedTemporaryFile
)更值得。)例如:
with tempfile.TemporaryDirectory() as tempdir:
do_stuff_with(tempdir)
# deletes everything automatically at end of with
或者,如果你不能把它放在with
声明中:
def make_tempdir(self):
self.tempdir = tempfile.TemporaryDirectory()
def remove_tempdir(self):
self.tempdir.cleanup()
事实上,即使对于2.7或3.1,您也可以考虑借用the source to 3.5's TemporaryDirectory
类并自己使用它(或者在PyPI上查找backport,如果存在的话)。