【发布时间】:2012-11-03 00:04:52
【问题描述】:
我正在创建一个类,我想在其中生成一个临时文件夹工作区,该文件夹将在对象的生命周期内持续存在,然后被删除。我在 def init 中使用 tempfile.mkdtemp() 来创建空间,但我读到我不能依赖 del 被调用。
我想要这样的东西:
class MyClass:
def __init__(self):
self.tempfolder = tempfile.mkdtemp()
def ... #other stuff
def __del__(self):
if os.path.exists(self.tempfolder): shutil.rmtree(self.tempfolder)
是否有另一种/更好的方法来处理这种清理工作?我正在阅读有关“与”的信息,但它似乎只在函数中有用。
【问题讨论】:
-
我认为唯一可靠的解决方案总是涉及明确地进行清理。我认为您在问题中设想的可靠的自动清理解决方案是不可能的。
-
@PedroRomano false:Python 的上下文管理器正是为此目的。
-
@katrielalex:甚至需要明确输入上下文管理器。
-
@PedroRomano 是的——但你总是需要例如打开一个文件。上下文管理器的重点在于它处理清理。
标签: python destructor temporary-directory