2010-07-11 11 views

Répondre

136

Utilisez la fonction mkdtemp() du module tempfile:

import tempfile 
import shutil 

dirpath = tempfile.mkdtemp() 
# ... do stuff with dirpath 
shutil.rmtree(dirpath) 
+7

Si vous l'utilisez dans un test, veillez à supprimer (shutil.rmtree) le répertoire car il n'est pas automatiquement supprimé après utilisation. "L'utilisateur de mkdtemp() est responsable de la suppression du répertoire temporaire et de son contenu une fois terminé." Voir: http://docs.python.org/2/library/tempfile.html#tempfile.mkdtemp –

+1

Ceci doit être la réponse acceptée! – gregoltsov

+23

Dans python3, vous pouvez faire 'avec tempfile.TemporaryDirectory() en tant que dirpath:', et le répertoire temporaire sera automatiquement nettoyé à la sortie du gestionnaire de contexte. https://docs.python.org/3.4/library/tempfile.html#tempfile.TemporaryDirectory – Symmetric

19

développiez une autre réponse, voici un exemple assez complet qui peut nettoyer le tmpdir même sur des exceptions:

import contextlib 
import os 
import shutil 
import tempfile 

@contextlib.contextmanager 
def cd(newdir, cleanup=lambda: True): 
    prevdir = os.getcwd() 
    os.chdir(os.path.expanduser(newdir)) 
    try: 
     yield 
    finally: 
     os.chdir(prevdir) 
     cleanup() 

@contextlib.contextmanager 
def tempdir(): 
    dirpath = tempfile.mkdtemp() 
    def cleanup(): 
     shutil.rmtree(dirpath) 
    with cd(dirpath, cleanup): 
     yield dirpath 

def main(): 
    with tempdir() as dirpath: 
     pass # do something here 
+0

Voir aussi http://stackoverflow.com/a/24176022/263998 – cdunn2001

+0

Plus utile que la réponse acceptée !!! – Timo

Questions connexes