Fichiers textes
Introduction
En Python, la manipulation de fichiers texte est une opération courante et essentielle pour stocker, récupérer et traiter des données. Dans cette section, nous verrons comment lire et écrire dans des fichiers texte en utilisant des méthodes appropriées et des bonnes pratiques.
Ouverture et fermeture de fichiers : bonnes pratiques
La façon recommandée de manipuler des fichiers en Python est d'utiliser le
mot-clé with
. Cela garantit que le fichier est correctement fermé une fois
les opérations terminées, même en cas d'erreur ou d'exception. Voici un exemple
simple d'ouverture et de fermeture automatique :
with open('exemple.txt', 'r', encoding='utf-8') as fichier:
contenu = fichier.read()
print(contenu)
Modes d'ouverture des fichiers
Python propose plusieurs modes pour ouvrir un fichier :
'r'
: mode lecture (par défaut)'w'
: mode écriture (écrase le fichier s'il existe, sinon le crée)'a'
: mode ajout (écrit à la fin du fichier)'x'
: crée un fichier, mais échoue si le fichier existe déjà
On peut aussi ajouter 'b'
pour traiter des fichiers binaires et '+'
pour
lire et écrire simultanément.
Lire le contenu d'un fichier
Lecture complète
La méthode read()
permet de lire tout le contenu du fichier en une seule
chaîne de caractères :
with open('exemple.txt', 'r', encoding='utf-8') as fichier:
contenu = fichier.read()
print(contenu)
Lire ligne par ligne
La méthode readline()
permet de lire une ligne à la fois :
with open('exemple.txt', 'r', encoding='utf-8') as fichier:
ligne = fichier.readline()
while ligne:
print(ligne.strip()) # strip() enlève les sauts de ligne
ligne = fichier.readline()
Lire toutes les lignes dans une liste
La méthode readlines()
renvoie une liste où chaque élément correspond à une
ligne du fichier :
with open('exemple.txt', 'r') as fichier:
lignes = fichier.readlines()
for ligne in lignes:
print(ligne.strip())
Écrire dans un fichier texte
Écriture simple (écraser le contenu existant)
with open('exemple.txt', 'w', encoding='utf-8') as fichier:
fichier.write('Bonjour, Python!\n')
fichier.write('Ceci est une nouvelle ligne.')
Écriture à la fin du fichier (ajouter du contenu)
with open('exemple.txt', 'a', encoding='utf-8') as fichier:
fichier.write('\nUne autre ligne ajoutée à la fin du fichier.')
Traitement de fichier texte : exemple pratique
Voici un exemple concret de lecture d'un fichier, traitement des données, puis
écriture dans un nouveau fichier. Cet exemple assume que nous avons un fichier
notes.txt
contenant des noms et des notes sour le format suivant :
nom1:75
nom2:45
nom3:88
nom4:60
Nous allons lire ce fichier, déterminer si chaque élève a réussi ou échoué
en fonction de sa note, et écrire les résultats
dans un nouveau fichier resultats.txt
au format suivant :
nom1: 75 (Réussi)
nom2: 45 (Échoué)
nom3: 88 (Réussi)
nom4: 60 (Réussi)
Voici le code pour réaliser cette tâche :
# Lire et traiter le fichier d'entrée
with open('notes.txt', 'r', encoding='utf-8') as fichier_entree:
lignes = fichier_entree.readlines()
notes_traitées = []
for ligne in lignes:
nom, note = ligne.strip().split(':')
note = int(note)
if note >= 60:
statut = 'Réussi'
else:
statut = 'Échoué'
notes_traitées.append(f"{nom}: {note} ({statut})")
# Écrire les résultats dans un nouveau fichier
with open('resultats.txt', 'w') as fichier_sortie:
for ligne in notes_traitées:
fichier_sortie.write(ligne + '\n')
Gestion des erreurs
Il est toujours recommandé d'inclure une gestion d'erreurs lors de la manipulation de fichiers :
try:
with open('exemple.txt', 'r', encoding='utf-8') as fichier:
contenu = fichier.read()
except FileNotFoundError:
print("Le fichier n'existe pas.")
except Exception as e:
print(f"Une erreur est survenue : {e}")
Bonnes pratiques
- Toujours utiliser
with
pour gérer automatiquement la fermeture des fichiers. - Vérifier que le fichier existe avant de le lire ou gérer l'exception
FileNotFoundError
. - Utiliser les méthodes adaptées à vos besoins (
read
,readline
,readlines
) pour optimiser les performances. - Toujours spécifier clairement le mode d'ouverture pour éviter des erreurs imprévues.