Lire et écrire des fichiers texte
Introduction
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 avecclose(), ou mieux, d'utiliserwithqui le fait automatiquement.
La fonction open()
La fonction open() prend deux arguments principaux : le nom du fichier et le mode d'ouverture.
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 :
1with open("journal.txt", "r") as fichier:
2 contenu = fichier.read()
3 print(contenu)
4# Le fichier est automatiquement fermé iciLes 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 !
| Mode | Nom complet | Effet | Si le fichier n'existe pas | Si le fichier existe déjà |
|---|---|---|---|---|
"r" | Lecture (read) | Lit le contenu | ❌ Erreur | Contenu lu normalement |
"w" | Écriture (write) | Écrit du contenu | ✅ Créé automatiquement | ⚠️ Contenu existant effacé ! |
"a" | Ajout (append) | Ajoute à la fin | ✅ Créé automatiquement | Contenu conservé, ajout à la fin |
"x" | Création exclusive | Cré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
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
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 :
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 ligneTestez 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 :
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, ettry/exceptpour 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 queopen()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
Que se passe-t-il si vous ouvrez un fichier existant avec le mode "w" ?
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.