
Bonjour à tous,
Nous avons vu dans cet article comment lire un fichier texte avec Python. Maintenant, nous allons maintenant voir comment écrire. Dans l’article mentionné, nous avons utilisé deux méthodes pour lire un fichier. La première est la méthode « open / close ». Celle-ci est simple d’utilisation à la condition de ne pas oublier l’instruction « close ». La seconde est la méthode « with open » où l’instruction « with » crée un bloc de code qui fermera automatiquement le fichier en cours d’utilisation. Il n’y a pas alors plus besoin de l’instruction « close ». C’est cette méthode que nous allons utiliser car elle permet d’avoir une meilleure lisibilité.
Ecrire dans un fichier avec Python
Pour écrire dans un fichier, vous devrez utiliser l’argument « w » pour « writing ». Si le fichier n’existe pas, Python le créera pour vous. Une fois ouvert, vous pourrez alors écrire vos données à l’intérieur avec l’instruction « .write() ».
Dans l’exemple suivant, le programme crée le fichier « monfichiertxt.txt » et écrit 4 lignes à l’intérieur. Ensuite, le fichier est ouvert pour lecture et le programme affiche le contenu.
nom_fichier = "monfichiertxt.txt"
with open(nom_fichier, "w") as f:
for i in range(4):
f.write(f"Ceci est la ligne {i}.\n")
with open(nom_fichier, "r") as f:
fichier = f.read()
print(fichier)
>>> Ceci est la ligne 0.
>>> Ceci est la ligne 1.
>>> Ceci est la ligne 2.
>>> Ceci est la ligne 3.
PythonATTENTION, si vous ouvrez un fichier existant dans ce mode, vous écraserez toutes les données. Je vous conseille donc de vérifier sur quel fichier vous travaillez. Pour empêcher le programme d’ouvrir un fichier existant et de l’écraser, vous pouvez utiliser l’argument « x » à la place de « w ». Cet argument permet de créer un fichier avec le nom que vous lui avez donné. Si ce fichier existe déjà, la fonction vous renverra une erreur. Pour rappel, les arguments de l’instruction « open() » sont décrits dans documentation officielle dont voici le lien.
nom_fichier = "monfichiertxt.txt"
f = open(nom_fichier , "x")
>>> FileExistsError: [Errno 17] File exists: 'monfichiertxt.txt'
PythonSi toutes les lignes que vous souhaitez écrire sont stockées dans une liste, vous pourrez toutes les écrire via une seule instruction qui est « .writelines() ».
liste = []
for i in range(4):
liste.append(f'Ceci est la ligne {i}.\n')
with open(nom_fichier, "w+") as f:
f.writelines(liste)
PythonAjouter des écritures dans un fichier texte avec Python
Si on écrase le fichier à chaque fois qu’on souhaite écrire quelque chose, c’est bien joli mais cela peut être un peu pénible. Fort heureusement, si vous utilisez l’argument « a » pour « appending », vous pourrez alors insérer des lignes à la fin du fichier. Voyons plutôt un exemple. On reprend le code précédent pour créer le fichier. Nous affichons son contenu puis nous l’ouvrons à nouveau pour ajouter une ligne. Le nouveau contenu est ensuite affiché.
nom_fichier = "monfichiertxt.txt"
with open(nom_fichier, "w") as f:
for i in range(4):
f.write(f"Ceci est la ligne {i}.\n")
with open(nom_fichier, "r") as f:
fichier = f.read()
print(fichier)
with open(nom_fichier, "a") as f:
f.write("Ceci est une nouvelle ligne.\n")
with open(nom_fichier, "r") as f:
fichier = f.read()
print(fichier)
PythonCe qui donne comme résultat :
Ceci est la ligne 0.
Ceci est la ligne 1.
Ceci est la ligne 2.
Ceci est la ligne 3.
Ceci est la ligne 0.
Ceci est la ligne 1.
Ceci est la ligne 2.
Ceci est la ligne 3.
Ceci est une nouvelle ligne.
PythonLes modes hybrides
Ce que j’appelle un mode hybride est un mode où vous rajouter un « + » après l’argument. Ce type de mode vous permet d’ajouter la lecture ou l’écriture suivant le mode choisi. Par exemple, avec l’argument « r », vous ne pouvez que lire un fichier. Avec l’argument « r+ », vous avez maintenant la possibilité d’écrire.
nom_fichier = "monfichiertxt.txt"
with open(nom_fichier, "w") as f:
for i in range(4):
f.write(f"Ceci est la ligne {i}.\n")
with open(nom_fichier, "r+") as f:
f.write("Une ligne peut en écraser une autre.\n")
with open(nom_fichier, "r") as f:
fichier = f.read()
print(fichier)
PythonUne ligne peut en écraser une autre.
e 1.
Ceci est la ligne 2.
Ceci est la ligne 3.
PythonEt voici un exemple avec l’argument « w+ » qui lui écrasera les données si écrivez dans le fichier.
with open(nom_fichier, "w+") as f:
f.write("Une ligne peut en écraser beaucoup d'autres.\n")
with open(nom_fichier, "r") as f:
fichier = f.read()
print(fichier)
PythonUne ligne peut en écraser beaucoup d'autres.
PythonPour résumé
Nous avons vu les modes principaux qui sont « w », « r » et « a » pour l’écriture, la lecture et l’ajout d’écriture respectivement. Avec ces trois modes, vous pourrez travailler comme vous voudrez dans les fichiers textes. L’utilisation des modes hybrides est délicate lorsque vous venez modifier le fichier. Un cas d’application serait de lire le fichier en entier en mode « r+ » puis de travailler sur la variable dans laquelle les lignes ont été stockées. Une fois les modifications terminées, vous écraserez le fichier avec les lignes mises à jour.
Pour visualiser l’effet de chaque mode sur le fichier, voici un tableau récapitulatif :

Merci de m’avoir lu, n’hésitez pas à laisser un commentaire,
A bientôt,
Benjamin