comment créer un répertoire temporaire et obtenir le chemin / nom du fichier en python
comment créer un répertoire temporaire et obtenir le chemin / nom du fichier en python
Réponses:
Utilisez la mkdtemp()
fonction du tempfile
module:
import tempfile
import shutil
dirpath = tempfile.mkdtemp()
# ... do stuff with dirpath
shutil.rmtree(dirpath)
with tempfile.TemporaryDirectory() as dirpath:
, et le répertoire temporaire sera automatiquement nettoyé à la sortie du gestionnaire de contexte. docs.python.org/3.4/library/…
Dans Python 3, TemporaryDirectory dans le module tempfile peut être utilisé.
Ceci vient directement du exemples :
import tempfile
with tempfile.TemporaryDirectory() as tmpdirname:
print('created temporary directory', tmpdirname)
# directory and contents have been removed
Si vous souhaitez conserver le répertoire un peu plus longtemps, alors quelque chose comme ceci pourrait être fait (pas à partir de l'exemple):
import tempfile
import shutil
temp_dir = tempfile.TemporaryDirectory()
print(temp_dir.name)
# use temp_dir, and when done:
shutil.rmtree(temp_dir.name)
Comme l'a souligné @MatthiasRoelandts, la documentation indique également que "le répertoire peut être explicitement nettoyé en appelant la cleanup()
méthode".
Pour développer une autre réponse, voici un exemple assez complet qui peut nettoyer le tmpdir même sur des exceptions:
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
Dans python 3.2 et versions ultérieures, il existe un gestionnaire de contexte utile pour cela dans le stdlib https://docs.python.org/3/library/tempfile.html#tempfile.TemporaryDirectory
Si je reçois correctement votre question, vous souhaitez également connaître les noms des fichiers générés dans le répertoire temporaire? Si oui, essayez ceci:
import os
import tempfile
with tempfile.TemporaryDirectory() as tmp_dir:
# generate some random files in it
files_in_dir = os.listdir(tmp_dir)