cómo crear un directorio temporal y obtener la ruta / nombre de archivo en python
cómo crear un directorio temporal y obtener la ruta / nombre de archivo en python
Respuestas:
Use la mkdtemp()
función del tempfile
módulo:
import tempfile
import shutil
dirpath = tempfile.mkdtemp()
# ... do stuff with dirpath
shutil.rmtree(dirpath)
with tempfile.TemporaryDirectory() as dirpath:
, y el directorio temporal se limpiará automáticamente al salir del administrador de contexto. docs.python.org/3.4/library/…
En Python 3, se puede utilizar TemporaryDirectory en el módulo tempfile .
Esto es directamente de los ejemplos :
import tempfile
with tempfile.TemporaryDirectory() as tmpdirname:
print('created temporary directory', tmpdirname)
# directory and contents have been removed
Si desea mantener el directorio un poco más largo, entonces se podría hacer algo como esto (no del ejemplo):
import tempfile
import shutil
temp_dir = tempfile.TemporaryDirectory()
print(temp_dir.name)
# use temp_dir, and when done:
shutil.rmtree(temp_dir.name)
Como señaló @MatthiasRoelandts, la documentación también dice que "el directorio se puede limpiar explícitamente llamando al cleanup()
método".
Para ampliar otra respuesta, aquí hay un ejemplo bastante completo que puede limpiar el tmpdir incluso con 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
En python 3.2 y posterior, hay un administrador de contexto útil para esto en stdlib https://docs.python.org/3/library/tempfile.html#tempfile.TemporaryDirectory
Si recibo su pregunta correctamente, ¿también desea conocer los nombres de los archivos generados dentro del directorio temporal? Si es así, intente esto:
import os
import tempfile
with tempfile.TemporaryDirectory() as tmp_dir:
# generate some random files in it
files_in_dir = os.listdir(tmp_dir)