Manipulation des fichiers texte en Python

@joekakone

Joseph Konka @joekakone

03/03/2026 · 9 min

Maîtrisez la lecture et l'écriture de fichiers texte (.txt) en Python : lecture intégrale (read), lecture ligne par ligne par itérateur mémoire (for line in f), écriture (write, writelines) et mode ajout (a).

Manipulation des fichiers texte en langage Python#

Les fichiers texte brut (.txt, .log, .cfg) constituent le format de stockage le plus simple et le plus transparent. En Python, leur manipulation est d'une grande fluidité grâce au protocole des itérateurs et au gestionnaire de contexte with open().


1. Écriture dans un fichier texte : write() et writelines()#

A. Écriture avec écrasement (Mode "w")#

Le mode "w" crée le fichier s'il n'existe pas, ou écrase intégralement son contenu précédent :

citations = [
    "La simplicite est la sophistication supreme. - Leonard de Vinci\n",
    "La lisibilite compte. - Le Zen de Python\n",
    "Fais-le simple, stupide ! (KISS Principle)\n"
]

with open("citations.txt", "w", encoding="utf-8") as f:
    # 1. Écriture d'une chaîne unique
    f.write("=== RECUEIL DE PENSEES LOGICIELLES ===\n\n")

    # 2. Écriture d'une collection de lignes
    f.writelines(citations)

print("Fichier 'citations.txt' ecrit avec succes.")

[!NOTE] Contrairement à la fonction print(), la méthode f.write() n'ajoute aucun saut de ligne automatique. Vous devez explicitement inclure le caractère \n à la fin de vos lignes.

B. Ajout à la fin sans écraser (Mode "a")#

Le mode "a" (Append) conserve l'existant et positionne le curseur à la fin du fichier :

with open("citations.txt", "a", encoding="utf-8") as f:
    f.write("Apprendre Python est un investissement a fort rendement.\n")

2. Lecture d'un fichier texte : 3 approches complémentaires#

Il existe trois techniques pour lire du texte selon la taille du fichier et l'usage prévu :

Approche 1 : Lecture intégrale en mémoire avec read()#

f.read() charge l'intégralité du fichier sous forme d'une seule grande chaîne de caractères :

with open("citations.txt", "r", encoding="utf-8") as f:
    contenu_total = f.read()

print(f"Nombre total de caracteres : {len(contenu_total)}")

Approche 2 : Découpage en liste avec readlines()#

f.readlines() lit toutes les lignes et les renvoie sous forme d'une liste de chaînes :

with open("citations.txt", "r", encoding="utf-8") as f:
    lignes = f.readlines()

print(f"Le fichier comporte {len(lignes)} lignes.")

Approche 3 : L'idiome suprême : L'itération ligne par ligne (Recommandé)#

[!TIP] Performance et sobriété mémoire :
En Python, un objet fichier ouvert est lui-même un itérateur. Si vous parcourez le fichier avec une boucle for ligne in f:, Python ne charge qu'une seule ligne à la fois en mémoire vive ! Cela vous permet de lire des fichiers gigantesques de plusieurs gigaoctets sans saturer la RAM de votre ordinateur :

with open("citations.txt", "r", encoding="utf-8") as f:
    for numero, ligne in enumerate(f, start=1):
        # .rstrip('\n') supprime le saut de ligne résiduel en fin de chaîne
        texte_nettoye = ligne.rstrip("\r\n")
        print(f"Ligne {numero:02d} : {texte_nettoye}")

3. Mise en pratique : Analyseur et nettoyeur de journal d'erreurs#

Concevons un script qui lit un fichier journal (serveur.log), filtre les lignes d'erreurs critiques ([ERROR]), et extrait ces incidents dans un rapport dédié erreurs.txt :

# 1. Création d'un fichier log d'exemple
logs_simulation = """[INFO] 10:00:01 Demarrage du serveur HTTP
[INFO] 10:00:05 Connexion de l'utilisateur #42
[ERROR] 10:01:23 Echec de connexion a la base PostgreSQL (Timeout 30s)
[WARN] 10:02:10 Utilisation memoire a 85%
[ERROR] 10:03:45 Erreur 500 sur la route /api/v1/checkout
[INFO] 10:05:00 Arret programme du service
"""

with open("serveur.log", "w", encoding="utf-8") as f:
    f.write(logs_simulation)

# 2. Filtrage et extraction des erreurs
nb_erreurs = 0

with open("serveur.log", "r", encoding="utf-8") as source, \
     open("rapport_erreurs.txt", "w", encoding="utf-8") as cible:

    cible.write("=== RAPPORT DES ANOMALIES CRITIQUES ===\n\n")

    for ligne in source:
        if "[ERROR]" in ligne:
            cible.write(ligne)
            nb_erreurs += 1

print(f">>> Traitement termine : {nb_erreurs} erreurs critiques isolees dans 'rapport_erreurs.txt'.")

4. Défi d'application#

Écrivez un programme statistiques_fichier.py qui lit un fichier texte quelconque et affiche un bilan statistique complet : - Nombre total de lignes - Nombre total de mots (séparés par des espaces) - Longueur de la ligne la plus longue - Nombre total de caractères

Commentaires

Inscrivez-vous à une formation complète

Voir le catalogue