Lecture libre, sans compteChapitre 2 · Manipuler des fichiers et dossiers

Lire et écrire des fichiers texte

Introduction

Mise en situation

Vous travaillez comme assistant administratif dans une petite entreprise. Votre responsable vous demande d'automatiser la création d'un journal d'activité quotidien : chaque jour, un fichier texte doit enregistrer les tâches effectuées, et vous devez aussi pouvoir relire les journaux des jours précédents.

Votre défi

Créer un script Python capable d'écrire dans un fichier texte et de relire son contenu, sans jamais effacer accidentellement les données existantes.

En Python, manipuler des fichiers texte est l'une des bases de l'automatisation. Que ce soit pour sauvegarder des résultats, lire une liste de contacts ou générer un rapport, savoir lire et écrire des fichiers est une compétence essentielle.

Le principe de base : ouvrir, agir, fermer

Travailler avec un fichier suit toujours le même schéma logique :

💡 À retenir : En Python, on utilise la fonction open() pour ouvrir un fichier, et il est essentiel de le fermer après usage avec close(), ou mieux, d'utiliser with qui le fait automatiquement.

La fonction open()

La fonction open() prend deux arguments principaux : le nom du fichier et le mode d'ouverture.

python
1fichier = open("journal.txt", "r")  # "r" = lecture (read)
2contenu = fichier.read()
3fichier.close()

Mais la méthode recommandée est d'utiliser le mot-clé with, qui ferme automatiquement le fichier même en cas d'erreur :

python
1with open("journal.txt", "r") as fichier:
2    contenu = fichier.read()
3    print(contenu)
4# Le fichier est automatiquement fermé ici

Les modes d'ouverture

Le comportement du fichier change radicalement selon le mode choisi. C'est une source fréquente d'erreurs chez les débutants !

ModeNom completEffetSi le fichier n'existe pasSi le fichier existe déjà
"r"Lecture (read)Lit le contenu❌ ErreurContenu lu normalement
"w"Écriture (write)Écrit du contenu✅ Créé automatiquement⚠️ Contenu existant effacé !
"a"Ajout (append)Ajoute à la fin✅ Créé automatiquementContenu conservé, ajout à la fin
"x"Création exclusiveCrée un nouveau fichier✅ Créé❌ Erreur si déjà existant

⚠️ Attention : Le mode "w" efface tout le contenu existant du fichier avant d'écrire ! Si vous voulez conserver l'ancien contenu et ajouter du nouveau, utilisez toujours "a" (append).

Écrire dans un fichier

python
1# Créer ou remplacer le contenu d'un fichier
2with open("journal.txt", "w") as fichier:
3    fichier.write("Tâche 1 : envoyer les emails\n")
4    fichier.write("Tâche 2 : mettre à jour le tableau Excel\n")

Ajouter du contenu sans effacer l'existant

python
1# Ajouter une ligne à la fin du fichier, sans rien effacer
2with open("journal.txt", "a") as fichier:
3    fichier.write("Tâche 3 : appeler le fournisseur\n")

Lire le contenu d'un fichier

Il existe plusieurs façons de lire un fichier :

python
1with open("journal.txt", "r") as fichier:
2    # Méthode 1 : tout lire en une seule chaîne de caractères
3    contenu = fichier.read()
4    print(contenu)
5
6with open("journal.txt", "r") as fichier:
7    # Méthode 2 : lire ligne par ligne (recommandé pour les gros fichiers)
8    for ligne in fichier:
9        print(ligne.strip())  # strip() enlève le retour à la ligne

Testez vous-même : simulateur d'écriture

Simulateur : que contient le fichier après ces opérations ?

Choisissez un mode d'ouverture et observez l'effet sur le contenu du fichier

Gérer les erreurs courantes

Un problème fréquent : essayer de lire un fichier qui n'existe pas. On peut anticiper cela avec un bloc try/except :

python
1try:
2    with open("journal.txt", "r") as fichier:
3        print(fichier.read())
4except FileNotFoundError:
5    print("Le fichier n'existe pas encore. Création en cours...")
6    with open("journal.txt", "w") as fichier:
7        fichier.write("Nouveau journal créé.\n")

🎯 En pratique : Pour un script d'automatisation robuste (comme un journal d'activité quotidien), combinez toujours la gestion d'erreurs avec le mode d'ouverture adapté : "a" pour ne jamais perdre de données, et try/except pour gérer l'absence du fichier.

Le saviez-vous ?

Le symbole '\n' que l'on ajoute à la fin des lignes n'a pas toujours été universel : sous Windows, les fichiers texte utilisent historiquement '\r\n' pour marquer un retour à la ligne, alors que Linux et macOS utilisent simplement '\n'. Python gère cette différence automatiquement grâce à un mécanisme appelé 'universal newlines' !

Documentation officielle Python - module io

Points clés à retenir

💡 À retenir : Utilisez toujours with open(...) as fichier: plutôt que open() seul : cela garantit que le fichier sera bien fermé, même si une erreur survient pendant l'exécution.

⚠️ Attention : Confondre les modes "w" et "a" est l'erreur n°1 des débutants. Le mode "w" écrase tout ! Vérifiez toujours le mode avant d'exécuter un script sur un fichier important.

Mini-quiz

Mini-Quiz
Question 1 / 3

Que se passe-t-il si vous ouvrez un fichier existant avec le mode "w" ?

En bref

En bref
  • 1La fonction open() avec le mot-clé 'with' est la méthode recommandée pour manipuler un fichier en toute sécurité, avec fermeture automatique.
  • 2Le mode "w" efface le contenu existant tandis que le mode "a" ajoute du texte à la fin sans rien supprimer : choisissez le mode selon le résultat voulu.
  • 3Utilisez un bloc try/except avec FileNotFoundError pour rendre vos scripts robustes face à l'absence d'un fichier.