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