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

Définition
En Python, on ouvre un fichier avec la fonction open(). Elle prend au minimum deux paramètres :
open("nom_du_fichier", "mode")
ModeSignificationDescription
"r"Readlecture seule (erreur si le fichier n’existe pas)
"w"Writeécriture (crée ou remplace le fichier)
"a"Appendajout à la fin du fichier
"r+"Read & Writelecture 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()

Bonnes pratiques
La syntaxe 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 :

  1. demande à l’utilisateur d’entrer des notes,
  2. les enregistre dans un fichier,
  3. 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

Gestion d’erreurs
Lorsqu’un fichier n’existe pas ou qu’il y a un problème d’accès, Python déclenche une erreur de type 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.