come creare una directory temporanea e ottenere il nome del percorso/file in pythonCome creare una directory temporanea e ottenere il nome del percorso/file in Python
79
A
risposta
136
4
Utilizzare il modulo tempfile.
19
Per espandere su un'altra risposta, ecco un esempio abbastanza completo che può sistemare il tmpdir anche sulle eccezioni:
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
5
In pitone 3.2 e successive, c'è un contextmanager utile per questo nel stdlib https://docs.python.org/3/library/tempfile.html#tempfile.TemporaryDirectory
Se si utilizza questo in un test, assicurarsi di rimuovere (shutil.rmtree) la directory perché non viene automaticamente cancellata dopo l'uso. "L'utente di mkdtemp() è responsabile dell'eliminazione della directory temporanea e del suo contenuto una volta terminato." Vedi: http://docs.python.org/2/library/tempfile.html#tempfile.mkdtemp –
Questa deve essere la risposta accettata! – gregoltsov
In python3, si può fare 'con tempfile.TemporaryDirectory() come dirpath:', e la directory temporanea verrà automaticamente ripulita all'uscita dal gestore di contesto. https://docs.python.org/3.4/library/tempfile.html#tempfile.TemporaryDirectory – Symmetric