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 :
| Mode | Nom | Effet |
|---|---|---|
"r" | read | lecture seule (erreur si le fichier n'existe pas) |
"w" | write | écriture : crée le fichier, ou écrase son contenu |
"a" | append | ajout à la fin, sans effacer l'existant |
"r+" | read/write | lecture 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 à appelerclose().
Écrire :
Relire tout de suite :
Lire ligne par ligne
Pour traiter un fichier ligne à ligne, on le parcourt comme une séquence. .strip() retire le saut de ligne final :
Ajouter sans écraser
Le mode "a" (append) ajoute à la fin sans supprimer ce qui existe déjà :
Lire et calculer
On peut charger toutes les lignes d'un coup avec .readlines(), puis les traiter :
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 untry / except:
Vérification
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.
Afficher la solution
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 sontr(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 boucleforparcourt ligne par ligne.- Protéger la lecture avec
try / except FileNotFoundError.
Mettre en pratique
Lire et écrire un fichier texte ou CSV.
- Prédire le découpage d'une ligne CSV1 · Débuter
- Découper un texte en lignes1 · Débuter
- Compter les lignes d'un texte2 · Fonctions
- Découper une ligne CSV2 · Fonctions
- Filtrer les lignes contenant un mot3 · Confirmé
- Extraire les nombres d'un texte3 · Confirmé
- Formater des données pour un fichier3 · Confirmé
- Assembler des lignes2 · Fonctions
- Statistiques d'un texte3 · Confirmé
- Défi : écrire puis relire un fichier4 · Avancé
- Débogage : compter des lignes2 · Fonctions