Comment lire un fichier ligne par ligne dans une liste en Python
-
readlines
pour lire le fichier ligne par ligne en Python - Itération sur la méthode de fichier pour lire un fichier ligne par ligne en Python
-
La méthode
file.read
pour lire le fichier ligne par ligne en Python - Comparaison des différentes méthodes de lecture d’un fichier ligne par ligne en Python
Supposons que nous ayons un fichier avec le contenu ci-dessous,
Line One: 1
Line Two: 2
Line Three: 3
Line Four: 4
Line Five: 5
Nous devons lire le contenu du fichier ligne par ligne dans une liste, ["Line One: 1", "Line Two: 2", "Line Three: 3", "Line Four: 4", "Line Five: 5"]
.
Nous allons introduire différentes méthodes pour lire un fichier ligne par ligne dans une liste ci-dessous.
readlines
pour lire le fichier ligne par ligne en Python
readlines
retourne une liste de lignes du flux.
>>> filePath = r"/your/file/path"
>>> with open(filePath, 'r', encoding='utf-8') as f:
f.readlines()
['Line One: 1\n', 'Line Two: 2\n', 'Line Three: 3\n', 'Line Four: 4\n', 'Line Five: 5']
Le caractère de fin \n
est également inclus dans la chaîne et il pourrait être supprimé avec str.rstrip('\n')
.
>>> with open(filePath, 'r', encoding='utf-8') as f:
[_.rstrip('\n') for _ in f.readlines()]
['Line One: 1', 'Line Two: 2', 'Line Three: 3', 'Line Four: 4', 'Line Five: 5']
Itération sur la méthode de fichier pour lire un fichier ligne par ligne en Python
Nous pourrions itérer sur le fichier pour le lire ligne par ligne, plutôt que d’utiliser des readlines
.
>>> with open(filePath, 'r', encoding='utf-8') as f:
[_.rstrip('\n') for _ in f]
['Line One: 1', 'Line Two: 2', 'Line Three: 3', 'Line Four: 4', 'Line Five: 5']
Cette méthode est bien meilleure que la méthode ci-dessus du point de vue de l’utilisation de la mémoire. La méthode readlines
contient toutes les lignes du fichier en mémoire, mais la méthode d’interation ne prend qu’une ligne du contenu du fichier en mémoire et la traite. Il est préférable que la taille du fichier soit très grande pour éviter une MemoryError
.
La méthode file.read
pour lire le fichier ligne par ligne en Python
file.read(size=-1, /)
lit à partir du fichier jusqu’à EOF si size
n’est pas défini. Nous pourrions séparer les lignes de ce fichier en utilisant la fonction str.splitlines
.
>>> with open(filePath, 'r') as f:
f.read().splitlines()
['Line One: 1', 'Line Two: 2', 'Line Three: 3', 'Line Four: 4', 'Line Five: 5']
Le résultat n’inclut pas le caractère de fin \n
dans la méthode par défaut str.splitlines
. Mais vous pouvez inclure \n
si le paramètre keepends
est réglé sur True
.
>>> with open(filePath, 'r') as f:
f.read().splitlines(keepends=True)
['Line One: 1\n', 'Line Two: 2\n', 'Line Three: 3\n', 'Line Four: 4\n', 'Line Five: 5']
Comparaison des différentes méthodes de lecture d’un fichier ligne par ligne en Python
Nous allons comparer les performances en matière d’efficacité entre les différentes méthodes présentées dans cet article. Nous augmentons le nombre de lignes dans le fichier testé à 8000
pour comparer facilement la différence de performance.
>>> timeit.timeit('''with open(filePath, 'r', encoding='utf-8') as f:
f.readlines()''',
setup='filePath=r"C:\Test\Test.txt"',
number = 10000)
16.36330720000001
>>> timeit.timeit('''with open(filePath, 'r', encoding='utf-8') as f:
[_ for _ in f]''',
setup='filePath=r"C:\Test\Test.txt"',
number = 10000)
18.37279060000003
>>> timeit.timeit('''with open(filePath, 'r', encoding='utf-8') as f:
f.read().splitlines()''',
setup='filePath=r"C:\Test\Test.txt"',
number = 10000)
12.122660100000019
La méthode readlines()
est légèrement meilleure que la méthode d’itération de fichier, et file.read().splitlines()
est la méthode la plus efficace avec une marge de plus de 25% par rapport aux deux autres méthodes.
Mais, si dans l’application BigData
où la mémoire est le contraignant, la méthode d’itération de fichier est la meilleure comme expliqué ci-dessus.
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn FacebookArticle connexe - Python String
- Supprimer les virgules de la chaîne en Python
- Comment vérifier qu'une chaîne est vide de manière pythonique
- Convertir une chaîne en nom de variable en Python
- Comment supprimer les espaces dans une chaîne de caractères en Python
- Comment extraire des nombres d'une chaîne de caractèresen Python
- Comment convertir une chaîne de caractères en datetime en Python