Comment créer des fichiers et répertoires temporaires en Python

Vous devez créer un fichier ou un répertoire temporaire à utiliser lorsque votre programme s’exécute. Par la suite, vous voulez peut-être que le fichier ou le répertoire soit détruit. Donc, lisez cet article justu’à la fin :).

Le module tempfile dispose de nombreuses fonctions pour effectuer cette tâche. Pour créer un fichier temporaire sans nom, utilisez la méthode tempfile.TemporaryFile:

from tempfile import TemporaryFile

with TemporaryFile('w+t') as f:
     # Lecture/écriture dans le fichier
     f.write('Hello World\n')
     f.write('Testing\n')

     # Chercher au début et lisez les données
     f.seek(0)
     donnee = f.read()

# Le fichier temporaire est détruit

 

Ou, si vous préférez, vous pouvez également utiliser le fichier comme ceci:

f = TemporaryFile('w+t')
# Utilisez le fichier temporaire
...
f.close()
# Le fichier est détruit

 

Le premier argument de TemporaryFile() est le mode du fichier, qui est généralement w+t pour le texte et w+b pour le binaire. Ce mode supporte simultanément la lecture et l’écriture, ce qui est utile ici car fermer le fichier pour changer de mode le détruirait.

TemporaryFile() accepte en outre les mêmes arguments que la fonction Python intégrée open(). Par exemple:

with TemporaryFile('w+t', encoding='utf-8', errors='ignore') as f:
     ...

 

Sur la plupart des systèmes Unix, le fichier créé par TemporaryFile() est sans nom et n’aura même pas d’entrée de répertoire. Si vous voulez éviter cette contrainte, utilisez plutôt NamedTemporary File(). Par exemple:

from tempfile import NamedTemporaryFile

with NamedTemporaryFile('w+t') as f:
    print('nom de fichier est: ', f.name)
    ...

# Fichier automatiquement détruit

 

Ici, l’attribut f.name du fichier ouvert contient le nom du fichier temporaire. Ceci peut être utile s’il doit être donnée à un autre code qui a besoin d’ouvrir le fichier.

Comme avec TemporaryFile(), le fichier résultant est automatiquement supprimé lorsqu’il est fermé. Si vous ne le souhaitez pas, fournissez l’argument delete=False. Par exemple:

with NamedTemporaryFile('w+t', delete=False) as f:
    print('nom du fichier est: ', f.name)
    ...

 

Pour créer un répertoire temporaire, utilisez tempfile.TemporaryDirectory(). Par exemple:

from tempfile import TemporaryDirectory
with TemporaryDirectory() as dirname:
     print('nom du répertoire est ', dirname)
     # Utilisez le répertoire 
     ...
# Répertoire et tout son contenu sont détruits

 

Les méthodes TemporaryFile(), NamedTemporaryFile() et TemporaryDirectory() sont probablement le moyen le plus pratique de travailler avec des fichiers et répertoires temporaires, car elles gèrent automatiquement toutes les étapes de création et de nettoyage ultérieur.

A un niveau bas, vous pouvez aussi utiliser mkstemp() et mkdtemp() pour créer des fichiers et répertoires temporaires. Par exemple:

>>> import tempfile
>>> tempfile.mkstemp()
(3, '/var/folders/7W/7WZl5sfZEF0pljrEB1UMWE+++TI/-Tmp-/tmp7fefhv')
>>> tempfile.mkdtemp()
'/var/folders/7W/7WZl5sfZEF0pljrEB1UMWE+++TI/-Tmp-/tmp5wvcv6'
>>>

 

Cependant, ces fonctions ne s’occupent pas vraiment de la gestion ultérieure. Par exemple, la fonction mkstemp() renvoie simplement un descripteur de fichier brut et vous laisse le soin de le transformer en fichier approprié. De même, c’est à vous de nettoyer les fichiers si vous le souhaitez.

Normalement, les fichiers temporaires sont créés dans l’emplacement par défaut du système, tel que /var/tmp ou similaire. Pour connaître l’emplacement réel, utilisez la fonction tempfile.gettempdir(). Par exemple:

>>> tempfile.gettempdir()
'/var/folders/7W/7WZl5sfZEF0pljrEB1UMWE+++TI/-Tmp-'
>>>

 

Toutes les fonctions liées aux fichiers temporaires vous permettent de remplacer ce répertoire ainsi que les conventions d’appellation à l’aide des arguments préfixe, suffixe et dir. Par exemple:

>>> f = NamedTemporaryFile(prefix='temp', suffix='.txt', dir='/tmp')
>>> f.name
'/tmp/temp8ee8987.txt'
>>>

 

Enfin, dans la mesure du possible, le module tempfile() crée des fichiers temporaires de la manière la plus sécurisée possible.

Ceci inclut seulement donner l’autorisation d’accès à l’utilisateur courant et prendre des mesures pour éviter les conditions de course dans la création de fichiers.

Sachez qu’il peut y avoir des différences entre les plates-formes. Ainsi, vous devriez vous assurer de vérifier la documentation officielle pour les points les plus fins.

LAISSER UN COMMENTAIRE

Please enter your comment!
Please enter your name here