Comment lire des lignes spécifiques d'un fichier en Python

Heys 30 janvier 2023
  1. fileobject.readlines() pour lire les lignes spécifiques d’un fichier de petite taille
  2. for boucle dans fileobject pour lire des lignes spécifiques en Python
  3. Module linecache pour lire les lignes spécifiques en Python
  4. enumerate lors de la lecture de lignes spécifiques d’un gros fichier en Python
Comment lire des lignes spécifiques d'un fichier en Python

Une façon courante de lire un fichier en Python est de le lire complètement et de traiter ensuite la ligne spécifique. La lecture d’un fichier en Python est rapide, par exemple, il faut environ 0,67 secondes pour écrire un fichier de 100MiB. Mais si la taille du fichier dépasse 100 Mo, cela entraînerait des problèmes de mémoire lors de sa lecture.

Python a 3 méthodes intégrées pour lire les lignes spécifiques d’un fichier, comme présenté dans les sections suivantes.

fileobject.readlines() pour lire les lignes spécifiques d’un fichier de petite taille

fileobject.readlines() lit tout le contenu du fichier en mémoire. Il peut utiliser le découpage en listes pour lire les lignes spécifiques.

Si nous avons seulement besoin de lire la ligne 10,

with open("file.txt") as f:
    data = f.readlines()[10]
print(data)

Si nous avons besoin de lire des lignes de 10 à 100,

with open("file.txt") as f:
    data = f.readlines()[10:100]
print(data)

for boucle dans fileobject pour lire des lignes spécifiques en Python

for line in fileobject est également une solution rapide pour les petits fichiers.

lines = [10, 100]
data = []
i = 0

with open("file.txt", "r+") as f:
    for line in f:
        if i in lines:
            data.append(line.strip)

        i = i + 1

print(data)

Module linecache pour lire les lignes spécifiques en Python

Le linecache permet de lire de nombreux fichiers, éventuellement de manière répétée ou d’extraire de nombreuses lignes:

import linecache

data = linecache.getline("file.txt", 10).strip()

La méthode de chaîne de caractères strip() retourne une chaîne qui supprime les espaces blancs aux deux extrémités.

Le module linecache vous permet d’obtenir n’importe quelle ligne d’un fichier source python tout en utilisant le cache pour une optimisation interne, ce qui est une pratique courante de lecture de plusieurs lignes d’un même fichier. Le module “traceback” l’utilise pour récupérer les lignes sources contenues dans le traceback formaté.

enumerate lors de la lecture de lignes spécifiques d’un gros fichier en Python

Lors de la lecture de fichiers, un fichier volumineux peut causer des problèmes tels qu’il ne peut pas être mis en mémoire. Dans ce cas, nous pourrions utiliser enumerate():

with open("file.txt") as f:
    for i, line in enumerate(f):
        pass  # process line i

Notez que pour la n-ième ligne, i = n-1.

La fonction enumerate() est utilisée pour combiner un objet de données traversable (tel qu’une liste, un n-uplet ou une chaîne) en une séquence d’index, listant les données et les indices de données en même temps, ce qui est généralement utilisé dans la boucle for.

Article connexe - Python File