Lire et écrire dans des fichiers en Python
Objectifs pédagogiques
Ouvrir un fichier
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()
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
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.