Lire et écrire dans des fichiers en Python
Jusqu’ici, tous les programmes que tu as écrits perdaient leurs données une fois terminés. Pour conserver des informations (notes, scores, paramètres, textes, etc.), il faut les enregistrer dans un fichier et pouvoir les relire plus tard.
Python facilite ces opérations grâce à des fonctions intégrées. Tu vas apprendre à ouvrir, lire, écrire et fermer un fichier texte, ainsi qu’à gérer les erreurs les plus courantes.
Objectifs pédagogiques
- Lire le contenu d’un fichier texte ligne par ligne.
- Écrire et sauvegarder des données dans un fichier.
- Comprendre les modes d’ouverture (
r,w,a). - Utiliser la syntaxe
with open()pour gérer automatiquement les fichiers.
Ouvrir un fichier
open(). Elle prend au minimum deux paramètres :open("nom_du_fichier", "mode")
| Mode | Signification | Description |
|---|---|---|
"r" | Read | lecture seule (erreur si le fichier n’existe pas) |
"w" | Write | écriture (crée ou remplace le fichier) |
"a" | Append | ajout à la fin du fichier |
"r+" | Read & Write | lecture et écriture |
Exemple
f = open("exemple.txt", "w")
f.write("Bonjour Python !")
f.close()
Ce code crée un fichier exemple.txt et y écrit une phrase. Le fichier se trouve dans le même dossier que ton script.
Lire un fichier
Lecture complète
f = open("exemple.txt", "r")
contenu = f.read()
f.close()
print(contenu)
Lecture ligne par ligne
f = open("notes.txt", "r")
for ligne in f:
print(ligne.strip()) # .strip() supprime les sauts de ligne
f.close()
La syntaxe with open()
with open() ferme automatiquement le fichier à la fin du bloc, même en cas d’erreur. C’est la méthode recommandée.Exemple
with open("exemple.txt", "r") as fichier:
contenu = fichier.read()
print(contenu)
Pas besoin d’appeler close() : le fichier est fermé automatiquement à la sortie du bloc.
Écrire dans un fichier
Écriture simple
with open("notes.txt", "w") as fichier:
fichier.write("Note 1 : 15\n")
fichier.write("Note 2 : 18\n")
Résultat dans le fichier notes.txt :
Note 1 : 15
Note 2 : 18
Ajouter sans écraser
with open("notes.txt", "a") as fichier:
fichier.write("Note 3 : 12\n")
Mode "a" (append) ajoute du contenu sans supprimer l’existant.
Lire et traiter les données
with open("notes.txt", "r") as fichier:
lignes = fichier.readlines()
total = 0
for ligne in lignes:
note = int(ligne.split(":")[1])
total += note
moyenne = total / len(lignes)
print(f"Moyenne des notes : {moyenne}")
Résultat :
Moyenne des notes : 15.0
Exemple complet
Créons un programme qui :
- demande à l’utilisateur d’entrer des notes,
- les enregistre dans un fichier,
- puis calcule la moyenne à partir du fichier.
# Écriture
with open("notes.txt", "w") as f:
for i in range(3):
note = input(f"Entrez la note {i+1} : ")
f.write(note + "\n")
# Lecture et calcul
with open("notes.txt", "r") as f:
lignes = f.readlines()
notes = [float(l.strip()) for l in lignes]
moyenne = sum(notes) / len(notes)
print(f"Moyenne : {moyenne:.2f}")
Gestion des erreurs
FileNotFoundError ou IOError.Exemple
try:
with open("inexistant.txt", "r") as f:
contenu = f.read()
except FileNotFoundError:
print("Erreur : le fichier n’existe pas.")
Résultat :
Erreur : le fichier n’existe pas.
