2017-09-28 6 views
-3

Si vous utilisez la bibliothèque tempfile, vous avez peut-être rencontré le scénario dans lequel le fichier temporaire n'est pas supprimé automatiquement même si votre programme est terminé. Ceci est très important pour les programmes qui seraient utilisés plusieurs fois car son répertoire deviendrait désordonné une fois que les fichiers temporaires s'accumuleraient.Python 3.4: Les fichiers temporaires ne sont pas supprimés automatiquement

Répondre

-2

Ceci est Q & A. Par conséquent, voici ma solution.

Apparemment, les paramètres par défaut du tempfile.TemporaryFile ne supprime pas automatiquement votre fichier temporaire, mais en ajoutant un préfixe dans vos tempfile.NamedTemporaryFile œuvres:

with tempfile.NamedTemporaryFile(prefix="anything_", 
             dir=os.getcwd()) as tempf: 

      '''put something''' 
      tempf.seek(0) 

Notes:

  • Le os.getcwd() est d'obtenir la répertoire actuel de votre fichier.
  • Votre fichier temporaire serait anything_ + (random values) (i.e. anything_23mem)

Hope it helps.

+1

Quelle était la question? –

+0

Cela ressemble à un rapport de bug pour les gens Python, pas une question Stack Overflow. Ni votre problème, ni votre solution, n'a de sens du tout. Je n'ai jamais eu besoin de fournir un 'prefix' pour déclencher la suppression automatique du bloc' with ', et je n'ai jamais échoué à supprimer automatiquement (sauf cas où 'ctypes' ou une extension plantait l'interpréteur en contournant le nettoyage). Si cela fonctionne, il s'agira probablement d'une utilisation explicite du répertoire de travail en tant qu'emplacement de stockage (probablement parce que quelque chose ne va pas dans votre répertoire de stockage TEMP), et non en relation avec 'prefix'. – ShadowRanger

+0

@ShadowRanger J'étais suspect que la suppression automatique des fichiers temporaires dans mon dossier 'TEMP' ne fonctionne pas. Donc je suis allé à ce répertoire (après avoir exécuté mon script), et je les ai encore vus là. La chose suivante que j'ai faite pour m'assurer que je peux le surveiller facilement est de faire le 'dir' du fichier temporaire le même avec le répertoire du script. En outre, j'utilise l'admin du PC. J'ai donc essayé d'exécuter le script, cela a fonctionné, mais le fichier temporaire est resté. Et c'est pourquoi je partage ma "solution" si jamais il y avait quelqu'un là-bas qui éprouverait la même chose. – Kucosyn