Aller au contenu principal

Lecture et écriture de fichiers

Un problème nous 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.

Ce qu'on va apprendre

  • 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.

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. Protège-nous 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