Aller au contenu principal

Lecture et écriture de fichiers

Ce que ce chapitre apporte

  • Ouvrir un fichier avec open() et ses modes (r, w, a).
  • Lire un fichier en entier ou ligne par ligne.
  • Écrire et ajouter des données.
  • Utiliser with open() pour tout gérer proprement.

Un problème saute peut-être aux yeux : dès que le programme se termine, tout ce qu'il avait en mémoire disparaît. Les notes saisies, un score, une liste… tout est perdu. Pour conserver des données d'une exécution à l'autre, il faut les enregistrer dans un fichier, puis pouvoir les relire.

Python rend ça très simple. On va apprendre à ouvrir, lire, écrire et refermer proprement un fichier texte.

Astuce : les blocs de cette page fonctionnent aussi pour les fichiers ! Le moteur Python du navigateur dispose d'un petit disque virtuel : on peut écrire puis relire un fichier dans le même exemple pour voir le résultat.

Ouvrir un fichier

On ouvre un fichier avec open("nom", "mode"). Le mode dit ce qu'on veut en faire :

ModeNomEffet
"r"readlecture seule (erreur si le fichier n'existe pas)
"w"writeécriture : crée le fichier, ou écrase son contenu
"a"appendajout à la fin, sans effacer l'existant
"r+"read/writelecture et écriture

La bonne méthode : with open()

Bonne pratique : utilise toujours with open(...) as f:. Le fichier est fermé automatiquement à la fin du bloc, même en cas d'erreur. On n'a jamais à appeler close().

Écrire :

main.py
Sortie
>_ Prêt à exécuter…

Relire tout de suite :

main.py
Sortie
>_ Prêt à exécuter…

Lire ligne par ligne

Pour traiter un fichier ligne à ligne, on le parcourt comme une séquence. .strip() retire le saut de ligne final :

main.py
Sortie
>_ Prêt à exécuter…

Ajouter sans écraser

Le mode "a" (append) ajoute à la fin sans supprimer ce qui existe déjà :

main.py
Sortie
>_ Prêt à exécuter…

Lire et calculer

On peut charger toutes les lignes d'un coup avec .readlines(), puis les traiter :

main.py
Sortie
>_ Prêt à exécuter…

Gérer les erreurs

Attention : si on ouvre en lecture un fichier qui n'existe pas, Python lève une FileNotFoundError. S'en protéger avec un try / except :

main.py
Sortie
>_ Prêt à exécuter…

Vérification

Vérification rapideon peut se reprendre

1.Ouvrir un fichier en mode "w" sur un fichier qui existe déjà fait quoi ?

2.À quoi sert with open(...) as f: plutôt qu'un open suivi d'un close ?

3.Une ligne lue dans un fichier texte se termine par quoi ?

4.Un fichier lu ligne par ligne dans une boucle for, puis relu dans une seconde boucle sans le rouvrir : la seconde boucle voit quoi ?

À mettre en pratique

Exercice : la liste de courses. Écrire trois articles dans un fichier courses.txt, un par ligne, puis relire le fichier et afficher « Article : … » pour chacun.

main.py
Sortie
>_ Prêt à exécuter…
Afficher la solution
main.py
Sortie
>_ Prêt à exécuter…

On écrit chaque article suivi de \n (saut de ligne), puis on relit ligne par ligne en nettoyant avec .strip().

Synthèse

  • open("nom", "mode") ouvre un fichier ; les modes clés sont r (lire), w (écraser), a (ajouter).
  • Utiliser toujours with open(...) as f: : le fichier se referme tout seul.
  • .read() lit tout, .readlines() renvoie une liste de lignes, une boucle for parcourt ligne par ligne.
  • Protéger la lecture avec try / except FileNotFoundError.

Mettre en pratique