2010-07-11 3 views

Antwort

136

Verwenden Sie die mkdtemp() Funktion aus dem tempfile Modul erhalten:

import tempfile 
import shutil 

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

Wenn Sie dies in einem Test verwenden, entfernen Sie (shuthil.rmtree) das Verzeichnis, da es nach der Verwendung nicht automatisch gelöscht wird. "Der Benutzer von mkdtemp() ist dafür verantwortlich, das temporäre Verzeichnis und seinen Inhalt zu löschen, wenn es damit fertig ist." Siehe: http://docs.python.org/2/library/tempfile.html#tempfile.mkdtemp –

+1

Dies muss die akzeptierte Antwort sein! – gregoltsov

+23

In python3 können Sie 'mit tempfile.TemporaryDirectory() als dirpath:' tun, und das temporäre Verzeichnis wird beim Beenden des Kontextmanagers automatisch bereinigt. https://docs.python.org/3.4/library/tempfile.html#tempfile.TemporaryDirectory – Symmetric

4

Verwenden Sie das Modul tempfile. dem Bereinigungs die tmpdir auch auf Ausnahmen

19

auf eine andere Antwort zu erweitern, hier ein ziemlich vollständiges Beispiel ist:

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

Siehe auch http://Stackoverflow.com/a/24176022/263998 – cdunn2001

+0

Nützlicher als die angenommene Antwort !!! – Timo

Verwandte Themen