python对象如何释放资源?

时间:2018-04-09 13:31:51

标签: python python-3.x

我有一个python类ReportGenerator,它需要临时目录来存储中间文件。 一旦ReportGenerator的对象被销毁,我的代码就需要删除临时文件夹。

在何处放置目录删除代码以确保一旦未引用对象,将删除临时文件夹。

在C ++中,删除类的析构函数中的文件夹是显而易见的。在python中有一个__del__,但我从其他帖子中了解到,不建议在这种情况下使用它。所以一般来说什么是python中的正确方法,所以一个对象可以拥有一个资源并在它被销毁后释放?

2 个答案:

答案 0 :(得分:2)

查看tempfile module。使用 tempfile.TemporaryFile 函数似乎符合您的需要。

答案 1 :(得分:0)

with上下文中的

tempfile.TemporaryDirectory可以满足您的需求。这来自examples for tempfile

# create a temporary directory using the context manager
>>> import tempfile
>>> with tempfile.TemporaryDirectory() as tmpdirname:
...     print('created temporary directory', tmpdirname)
>>>
# directory and contents have been removed

退出with块时,递归删除目录及其内容。