2.2. Lire un fichier de texte

La méthode read() de l’objet fichier permet de lire un certain nombre de caractères d’un fichier de texte. La lecture commence à la position actuelle de la tête de lecture, initialement placée au début du fichier. Le nombre de caractères à lire est spécifié en paramètre (s’il est omis, la lecture se poursuit jusqu’à la fin du fichier). La méthode renvoie comme résultat les caractères effectivement lus et déplace la tête de lecture en conséquence.

Prenons comme exemple le fichier de texte poem.txt suivant :

CHANSON D'AUTOMNE
Les sanglots longs
Des violons
De l'automne

Le code ci-dessous illustre l’utilisation de la méthode read().

with open("poem.txt", 'r', encoding='utf-8') as file:
    print(file.read(8))  # on lit les 8 premiers caractères...
    print(file.read(2))  # puis les 2 suivants...
    print(file.read())   # puis le reste
CHANSON
D'
AUTOMNE
Les sanglots longs
Des violons
De l'automne

Note

Le fichier doit bien entendu être ouvert en mode lecture avant d’utiliser la méthode read().

Les méthodes seek() et tell() de l’objet fichier permettent respectivement de modifier et d’obtenir la position de la tête de lecture.

with open("poem.txt", 'r', encoding='utf-8') as file:
    print(file.tell())
    print(file.read(7))
    print(file.tell())
    file.seek(18)
    print(file.read(12))
0
CHANSON
7
Les sanglots

Il est aussi possible, et souvent utile, de lire un fichier ligne par ligne grâce aux méthodes readline(), qui renvoie comme chaîne de caractères la ligne suivante du fichier, et readlines(), qui renvoie sous forme de liste de chaînes de caractères toutes les lignes restantes jusqu’à la fin du fichier.

with open("poem.txt", 'r', encoding='utf-8') as file:
    print(file.readline())
    print(file.readlines())
CHANSON D'AUTOMNE

['Les sanglots longs\n', 'Des violons\n', "De l'automne\n"]

On peut également lire le fichier ligne par ligne à l’aide d’une simple boucle for.

with open("poem.txt", 'r', encoding='utf-8') as file:
    for line in file:      # pour chaque ligne du fichier...
        print(len(line))  # on affiche sa longueur
18
19
12
13