如何在python中删除tempfile

时间:2015-06-11 23:25:33

标签: python

删除临时文件的最佳方法是什么?它有内置的方法吗?例如:

self.tempdir = tempfile.mkdtemp()
rm self.tempdir ?

1 个答案:

答案 0 :(得分:4)

删除临时目录与删除任何其他目录相同:如果您确定已将其清空,请致电os.rmdir(并考虑一下)如果它不为空则出错,或者如果没有则为shutil.rmtree

如果您使用的是3.2或更高版本,则使用TemporaryDirectory而不是mkdtemp创建临时目录要简单得多。它以一种很好的跨平台方式处理所有繁琐的边缘情况,因此您不必担心它们。 (如果您正在创建临时文件,正如您的问题标题所示,使用更高级别的API(例如TemporaryFileNamedTemporaryFile)更值得。)例如:

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,如果存在的话)。