2010-07-11 14 views

Respuesta

136

Utilice la función mkdtemp() del módulo tempfile:

import tempfile 
import shutil 

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

Si usa esto en una prueba, asegúrese de eliminar (shutil.rmtree) el directorio porque no se elimina automáticamente después de su uso. "El usuario de mkdtemp() es responsable de eliminar el directorio temporal y su contenido cuando termina con él". Consulte: http://docs.python.org/2/library/tempfile.html#tempfile.mkdtemp –

+1

¡Esta debe ser la respuesta aceptada! – gregoltsov

+23

En python3, puede hacer 'con tempfile.TemporaryDirectory() como dirpath:', y el directorio temporal se limpiará automáticamente al salir del administrador de contexto. https://docs.python.org/3.4/library/tempfile.html#tempfile.TemporaryDirectory – Symmetric

19

Para ampliar en otra respuesta, aquí es un ejemplo bastante completo que puede limpiar el tmpdir incluso sobre las excepciones:

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

Véase también http://stackoverflow.com/a/24176022/263998 – cdunn2001

+0

¡Más útil que la respuesta aceptada! – Timo

Cuestiones relacionadas