Comment lire un fichier ligne par ligne dans une liste en Python

  1. readlines pour lire le fichier ligne par ligne en Python
  2. Itération sur la méthode de fichier pour lire un fichier ligne par ligne en Python
  3. La méthode file.read pour lire le fichier ligne par ligne en Python
  4. 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 renvoie 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.

Article connexe - Python String

  • Comment vérifier qu'une chaîne est vide de manière pythonique
  • Comment supprimer les espaces dans une chaîne de caractères en Python
  • Comment convertir une chaîne de caractères en datetime en Python
  • Comment convertir une chaîne de caractères en minuscules en Python 2 et 3
  • Comment vérifier si une chaîne de caractères contient une sous-chaîne en Python
  • Comment convertir une liste en chaîne de caractères en Python
  • Comment convertir une chaîne de caractères en Float ou Int en Python
  • Comment convertir une chaîne de caractères en octets en Python
  • comments powered by Disqus