Bonne façon de nettoyer un dossier temporaire en Python classe

Je suis la création d'une classe dans laquelle je veux générer un espace de travail temporaire de dossiers qui seront conservés pour la durée de vie de l'objet et ensuite être retiré. Je suis à l'aide de fichier temporaire.mkdtemp() dans la def init pour créer de l'espace, mais j'ai lu que je ne peux pas compter sur del appelé.

Je suis désireux quelque chose comme ceci:

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)

Est-il une autre/meilleure façon de gérer cela nettoyer? Je lisais à propos de "avec", mais il semble seulement être utile au sein d'une fonction.

  • Je pense que les seules solutions fiables impliquera toujours faire le nettoyage de manière explicite. Je ne pense pas que l'automatique fiable de nettoyage solution à envisager dans votre question, c'est possible.
  • faux: Python contexte, les gestionnaires sont exactement à cette fin.
  • même contexte, les gestionnaires doivent être explicitement entrée.
  • oui, mais vous avez toujours besoin pour ouvrir un fichier. Le point d'un gestionnaire de contexte est qu'il ne gère nettoyage.
InformationsquelleAutor Rob Hunter | 2012-11-14