Écrire dans un fichier non existent

Vous voulez écrire des données dans un fichier, mais seulement s’il n’existe pas déjà sur le système de fichiers.

Ce problème est facilement résolu en utilisant le mode x peu connu pour la fonction open() au lieu du mode w habituel. Par exemple:

>>> with open('fichier', 'wt') as f:
... 	f.write('Python est amusant\n')
...

>>> with open('fichier', 'xt') as f:
... 	f.write('Python est amusant\n')
...
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
FileExistsError: [Errno 17] File exists: 'fichier'

>>>

 

Si le fichier est en mode binaire, utilisez le mode xb au lieu de xt.

Ce code Python illustre une solution extrêmement élégante à un problème qui survient parfois lors de l’écriture de fichiers (par exemple, écraser accidentellement un fichier existant). Une solution alternative est de tester d’abord l’existence du fichier comme ceci:

>>> import os
>>> if not os.path.exists('fichier'):
... 	with open('fichier', 'wt') as f:
... 		f.write('Python est amusant\n')
... else:
... 	print('Le fichier existe déjà!')
...
Le fichier existe déjà!
>>>

De toute évidence, l’utilisation du mode fichier x est beaucoup plus simple. Il est important de noter que le mode x est une extension spécifique à la fonction open() de Python 3.

En particulier, un tel mode n’existe pas dans les versions antérieures de Python ou dans les bibliothèques C sous-jacentes utilisées dans l’implémentation de Python.

LAISSER UN COMMENTAIRE

Please enter your comment!
Please enter your name here