come creare una directory temporanea e ottenere il nome del percorso / file in Python
come creare una directory temporanea e ottenere il nome del percorso / file in Python
Risposte:
Utilizzare la mkdtemp()funzione dal tempfilemodulo:
import tempfile
import shutil
dirpath = tempfile.mkdtemp()
# ... do stuff with dirpath
shutil.rmtree(dirpath)
with tempfile.TemporaryDirectory() as dirpath:e la directory temporanea verrà automaticamente ripulita all'uscita dal gestore del contesto. docs.python.org/3.4/library/…
In Python 3, è possibile utilizzare TemporaryDirectory nel modulo tempfile .
Questo è direttamente dagli esempi :
import tempfile
with tempfile.TemporaryDirectory() as tmpdirname:
print('created temporary directory', tmpdirname)
# directory and contents have been removed
Se desideri mantenere la directory un po 'più a lungo, puoi fare qualcosa del genere (non dall'esempio):
import tempfile
import shutil
temp_dir = tempfile.TemporaryDirectory()
print(temp_dir.name)
# use temp_dir, and when done:
shutil.rmtree(temp_dir.name)
Come sottolineato da @MatthiasRoelandts, la documentazione dice anche che "la directory può essere ripulita esplicitamente chiamando il cleanup()metodo".
Per espandere un'altra risposta, ecco un esempio abbastanza completo che può ripulire il tmpdir anche su 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
In python 3.2 e versioni successive, è disponibile un utile gestore di scenari per questo nello stdlib https://docs.python.org/3/library/tempfile.html#tempfile.TemporaryDirectory
Se ricevo correttamente la tua domanda, vuoi conoscere anche i nomi dei file generati nella directory temporanea? In tal caso, prova questo:
import os
import tempfile
with tempfile.TemporaryDirectory() as tmp_dir:
# generate some random files in it
files_in_dir = os.listdir(tmp_dir)