Aller au contenu
Accueil » Lire un fichier texte avec Python

Lire un fichier texte avec Python

    lecture des fichiers texte avec Python

    Lire un fichier texte avec Python est monnaie courante. Dans de nombreuses applications, les données sont stockées dans des fichiers textes. Ces fichiers sont utilisés pour stocker temporairement de l’information ou sont nécessaires pour définir les paramètres du programme. Il est donc important de savoir accéder à ces fichiers pour récupérer les données.

    Nous verrons dans cet article différents méthodes pour lire un fichier en texte brut. Elles ne s’appliquent pas au fichier binaire par exemple. Bonne lecture à vous !

    La méthode « open » / « close »

    C’est la méthode la plus simple. Ces deux mots clés sont plutôt explicites. Le premier permet d’ouvrir le fichier et de travailler dessus. Le second, quant à lui, referme le fichier et libère la mémoire.

    fichier = open("fichier.txt","r")
    
    # Votre code sur le fichier ici
    
    fichier.close()
    Python

    L’argument « r » est la première lettre de « reading » pour lecture. Ce mode ne permet que de lire le fichier. Pour écrire dans le fichier, nous utiliserons l’argument « w » pour « writing » ou l’argument « a » pour « append ». Si vous souhaitez plus d’informations sur les modes de travail avec les fichiers, voici le lien pour la documentation officielle. Cet article se concentre sur la lecture des fichiers ! Nous verrons les autres options dans un article à part.

    fichier = open("fichier.txt","r")  # lecture uniquement
    fichier.close()
    fichier = open("fichier.txt","w")  # pour écriture, attention ce mode écrase tout
    fichier.close()
    fichier = open("fichier.txt","w")  # pour écriture, ajoute à la fin du fichier
    fichier.close()
    Python

    Cette méthode est très simple d’utilisation. L’inconvénient est qu’il ne faut pas oublier de le fermer sinon il faudra attendre la fin du programme. Suivant les types de fichier avec lesquels vous travaillerez, si vous oubliez de fermer le fichier, la performance sera altérée avec la mémoire qui n’est pas libérée au fur et à mesure. De plus, si vous devez accéder à plusieurs reprises au fichier, vous ne pourrez pas car il sera déjà ouvert et bloqué. Pour éviter, cela, je vous présente la méthode « with open » dans la section suivante.

    La méthode « with open »

    Cette méthode permet de créer un bloc avec le mot clé « with » dans lequel vous allez travailler sur le fichier. Dès que vous sortirez de ce bloc, le fichier sera libéré. Cette méthode a le gros avantage de ne pas oublier l’instruction « close » puisque celle-ci se fait automatiquement.

    with open("fichier.txt", "r") as lecture_fichier:
      # Actions avec le fichier
    with open("fichier.txt", "w") as ecriture_fichier:
      # Actions avec le fichier
    with open("fichier.txt", "a") as ajout_fichier:
      # Actions avec le fichier 
    Python

    Je préfère cette méthode car le bloc donne une lisibilité sur ce qui est fait avec le fichier. De plus, une fois que vous avez fini, le fichier est refermé automatiquement et la mémoire est libérée directement après.

    Lire votre fichier avec Python et la fonction read()

    Nous arrivons maintenant au moment où nous souhaitons lire le fichier. Nous pouvons choisir plusieurs options pour lire un fichier. La première est la fonction « .read() » qui permet de lire tout le fichier et de le stocker dans une variable.

    with open("fichier.txt", "r") as f:
        fichier = f.read()
        print(fichier)
    Python

    Et voici le résultat obtenu :

    Bonjour
    tout le monde.
    Bonne lecture !
    Python

    Nous récupérons bien notre fichier, tout va bien. Seulement, avec cette méthode, le fichier est stocké comme une seule chaîne de caractère dans la variable fichier. Ce n’est pas le plus pratique pour travailler sur le fichier ligne à ligne.

    fichier
    >>> 'Bonjour\ntout le monde.\nBonne lecture !'
    Python

    Lire le fichier avec Python et la fonction readlines()

    La méthode suivante que nous allons voir est « readlines() ». Le « S » à la fin a son importance. Elle permet de lire tout le fichier et de le stocker dans une variable. Cependant, cette fois-ci, la variable sera une liste où chaque élément représente une ligne du fichier.

    with open("fichier.txt", "r") as f:
        fichier = f.readlines()
        print(fichier)
    with open("fichier.txt", "r") as f:
        [print(line) for line in f.readlines()]
    
    Python

    Dans le premier bloc, on stocke tout le fichier dans une variable appelée « fichier » et on affiche cette variable pour voir ce qu’on obtient. Le second bloc lui présente un exemple pour afficher le fichier ligne à ligne. Afin d’adopter une écriture condensée, nous avons utilisé une liste en compréhension. Cette façon de faire fera l’objet d’un article. Voyons maintenant le résultat :

    ['Bonjour\n', 'tout le monde.\n', 'Bonne lecture !']
    
    Bonjour
    
    tout le monde.
    
    Bonne lecture !
    Python

    Nous observons bien que la variable fichier est maintenant une liste avec la présence des crochets. Vous noterez la présence des caractères « \n ». Ces caractères représente les retours à la ligne. De plus, lorsqu’on affiche le fichier ligne à ligne, on remarque un saut de ligne supplémentaire. Cela vient de la fonction print qui par défaut ajoute un saut de ligne. Nous nous retrouvons donc avec deux sauts de ligne puisqu’il y en a déjà un dans le fichier texte.

    Deux solutions s’offrent à vous. Tout d’abord, vous pouvez utiliser la fonction strip(). J’en parle dans l’article sur les chaînes de caractères. Cette fonction permet de supprimer les espaces en début et fin de chaîne de caractère mais également les retours à la ligne. Ensuite, vous pouvez aussi utiliser l’argument « end= » de la fonction « print » et mettre un charactère vide à la place d’un retour à ligne.

    with open("fichier.txt", "r") as f:
        [print(line.strip()) for line in f.readlines()]
    with open("fichier.txt", "r") as f:
        [print(line, end="") for line in f.readlines()]
    Python

    Et voici le résultat :

    Bonjour
    tout le monde.
    Bonne lecture !
    Bonjour
    tout le monde.
    Bonne lecture !
    Python

    Lire un fichier avec Python et la fonction readline()

    Enfin, nous allons voir la fonction « readline() », sans le « S » à la fin, qui permet de lire ligne à ligne un fichier. A chaque fois que vous appelez la fonction, la ligne suivante sera lue dans le fichier. Ainsi, avec une boucle « while », vous pouvez parcourir le fichier ligne après ligne.

    with open("fichier.txt", "r") as f:
        line = f.readline()
        while line:
            print(line.strip())
            line = f.readline()
    Python
    Bonjour
    tout le monde.
    Bonne lecture !
    Python

    Itérer sur les lignes du fichier

    Une autre manière de lire un fichier ligne à ligne est d’itérer directement l’objet renvoyé par la fonction open().

    with open("fichier.txt", "r") as f:
        for line in f:
            print(line.strip())
    Python

    La variable « f » est utilisée pour stocker ce que renvoie la fonction « open ». Ensuite une boucle « for » permet d’itérer sur la variable. Nous aurions pu également réutiliser une liste en compréhension pour condenser le code sur une seule ligne. Nous réutilisons la fonction « .strip() » afin d’éviter les sauts de ligne. Voici ce qu’on obtient en sortie :

    Bonjour
    tout le monde.
    Bonne lecture !
    Python

    En résumé

    Nous avons vu la fonction open() qui permet d’ouvrir un fichier et de le lire ainsi que la fermeture de celui-ci avec la fonction close(). Cependant cette dernière n’est pas la méthode que j’utilise tous les jours mais plutôt l’utilisation d’un bloc avec l’instruction « with« . Celle-ci permet de fermer automatiquement le fichier une fois qu’on est sorti du bloc.

    Pour lire le fichier et traiter l’information, quatre méthodes ont été présentées :

    • La fonction .read() : renvoie une chaîne de caractères avec tout le fichier dedans. Pas très pratique
    • La fonction .readlines() : stocke tout le fichier dans une liste. Chaque élément de la liste représente une ligne du fichier
    • La fonction .readline() : permet de lire le fichier ligne après ligne via une boucle « while »
    • Itérer sur l’objet renvoyé par open() : permet de lire le fichier ligne à ligne avec une boucle « for »

    Chaque ligne pourra alors être traitée comme n’importe quelle chaîne de caractère. Et pour finir, j’attire votre attention sur les caractères de fin de ligne. Si vous oubliez de les supprimer, vous les accumulerez et obtiendrez des sauts de ligne intempestifs.

    Voilà, nous avons vu ensemble comment lire un fichier texte en Python. N’hésitez pas à mettre des commentaires, j’y répondrai avec plaisir.
    A bientôt,
    Benjamin

    Si vous avez aimé l'article, vous êtes libres de le partager ! :)

    Laisser un commentaire