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...).
# 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.
# 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
# "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
# 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
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.
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.