Leçon 8 / 10
Leçon 08 · Partie 2 — Structures et projet

Lire et écrire des fichiers

Pourquoi utiliser des fichiers ?

Un programme qui stocke tout en mémoire perd tout quand on le ferme. Pour sauvegarder des données entre deux exécutions, il faut les écrire dans un fichier.

Un carnet de contacts, un journal, des scores de jeu — tout ça peut être sauvegardé dans un simple fichier texte (.txt) avec Python.

Ouvrir un fichier avec open()

La fonction open() ouvre un fichier. Elle prend deux arguments : le nom du fichier et le mode (lecture, écriture...).

Python
# Modes d'ouverture :
# "r"  — read    : lecture (par défaut)
# "w"  — write   : écriture (écrase si le fichier existe)
# "a"  — append  : ajout à la fin du fichier
# "r+" — read+write : lecture et écriture

fichier = open("notes.txt", "r")
contenu = fichier.read()
fichier.close()   # toujours fermer après utilisation

La bonne pratique : with

Utiliser with ferme automatiquement le fichier à la fin du bloc. Plus besoin de penser à .close(). C'est la méthode recommandée.

Python
# Lire tout le contenu d'un fichier
with open("message.txt", "r", encoding="utf-8") as f:
    contenu = f.read()
    print(contenu)
# Le fichier est automatiquement fermé ici

Toujours ajouter encoding="utf-8" pour éviter les problèmes avec les accents. Sur Windows, l'encodage par défaut n'est pas toujours UTF-8.

Écrire dans un fichier

Python
# "w" écrase le fichier existant (ou le crée s'il n'existe pas)
with open("courses.txt", "w", encoding="utf-8") as f:
    f.write("pommes\n")
    f.write("pain\n")
    f.write("lait\n")

# "a" ajoute à la fin sans effacer le contenu existant
with open("courses.txt", "a", encoding="utf-8") as f:
    f.write("café\n")
⚠️

Le mode "w" écrase le fichier s'il existe déjà. Si tu veux juste ajouter du contenu, utilise "a" (append).

Lire ligne par ligne

Python
# Lire toutes les lignes dans une liste
with open("courses.txt", "r", encoding="utf-8") as f:
    lignes = f.readlines()

for ligne in lignes:
    print(ligne.strip())   # .strip() enlève le \n de fin

Exemple complet : journal de notes

Python
def ajouter_note(texte):
    with open("journal.txt", "a", encoding="utf-8") as f:
        f.write(texte + "\n")

def lire_journal():
    try:
        with open("journal.txt", "r", encoding="utf-8") as f:
            return f.read()
    except FileNotFoundError:
        return "Aucune note pour l'instant."

ajouter_note("Aujourd'hui j'ai appris Python !")
ajouter_note("Les fichiers, c'est pratique.")
print(lire_journal())
💡

try / except FileNotFoundError gère le cas où le fichier n'existe pas encore. C'est une bonne habitude : anticiper les erreurs évite des plantages inattendus.

// À retenir
  • open("fichier", "mode") ouvre un fichier. Modes : r, w, a.
  • Toujours utiliser with open(...) as f: — fermeture automatique.
  • Toujours ajouter encoding="utf-8" pour les accents.
  • f.read() lit tout. f.readlines() retourne une liste de lignes.
  • f.write("texte") écrit. "w" écrase, "a" ajoute.