Conditions préalables:
Python fournit des fonctions intégrées pour créer, écrire et lire des fichiers. Il existe deux types de fichiers pouvant être gérés en python, les fichiers texte normaux et les fichiers binaires (écrits en langage binaire, 0 et 1). Dans cet article, nous allons étudier la lecture ligne par ligne à partir d’un fichier.
Méthode 1 : lire un fichier ligne par ligne à l’aide de readlines()
readlines() est utilisé pour lire toutes les lignes en une seule fois, puis les renvoyer sous forme d'élément de chaîne dans une liste. Cette fonction peut être utilisée pour les petits fichiers, car elle lit tout le contenu du fichier dans la mémoire, puis le divise en lignes distinctes. Nous pouvons parcourir la liste et supprimer le caractère de nouvelle ligne ' ' à l'aide de la fonction strip().
Exemple:
Python3
# Python code to> # demonstrate readlines()> L>=> [>'Geeks
'>,>'for
'>,>'Geeks
'>]> # writing to file> file1>=> open>(>'myfile.txt'>,>'w'>)> file1.writelines(L)> file1.close()> # Using readlines()> file1>=> open>(>'myfile.txt'>,>'r'>)> Lines>=> file1.readlines()> count>=> 0> # Strips the newline character> for> line>in> Lines:> >count>+>=> 1> >print>(>'Line{}: {}'>.>format>(count, line.strip()))> |
>
>
Sortir:
Line1: Geeks Line2: for Line3: Geeks>
La complexité temporelle du code Python donné est O(n), où n est le nombre total de lignes dans le fichier
La complexité spatiale auxiliaire du code est O(n), où n est le nombre total de lignes du fichier.
Méthode 2 : lire un fichier ligne par ligne à l’aide de readline()
La fonction readline() lit une ligne du fichier et la renvoie sous la forme d'une chaîne. Il prend un paramètre n, qui spécifie le nombre maximum d'octets qui seront lus. Cependant, ne lit pas plus d'une ligne, même si n dépasse la longueur de la ligne. Il sera efficace lors de la lecture d'un fichier volumineux car au lieu de récupérer toutes les données en une seule fois, il récupère ligne par ligne. readline() renvoie la ligne suivante du fichier qui contient un caractère de nouvelle ligne à la fin. De plus, si la fin du fichier est atteinte, il renverra une chaîne vide.
Exemple:
APPROCHE ÉTAPE PAR ÉTAPE :
- Créez une liste L avec trois éléments de chaîne contenant des caractères de nouvelle ligne.
- Ouvrez un fichier nommé monfichier.txt en mode écriture et affectez-le à la variable fichier1.
- Écrivez le contenu de la liste L dans le fichier en utilisant la méthode writelines() de l'objet fichier file1.
- Fermez le fichier objet file1 à l'aide de la méthode close().
- Ouvrez le fichier nommé monfichier.txt en mode lecture et affectez-le à la variable fichier1.
- Initialisez un nombre de variables à 0.
- Démarrez une boucle infinie.
- Incrémentez le nombre de variables de 1 à chaque itération de la boucle.
- Lisez la ligne suivante du fichier objet file1 à l'aide de la méthode readline() et affectez-la à la ligne variable.
- Vérifiez si la variable de ligne est vide. S'il est vide, cela signifie que la fin du fichier est atteinte. Dans ce cas, sortez de la boucle à l’aide de l’instruction break.
- Imprimez la valeur de count et le contenu de la ligne en utilisant la méthode format() de la classe string. La méthode strip() est utilisée pour supprimer le caractère de nouvelle ligne à la fin de la ligne.
- Fermez le fichier objet file1 à l'aide de la méthode close().
Python3
# Python program to> # demonstrate readline()> L>=> [>'Geeks
'>,>'for
'>,>'Geeks
'>]> # Writing to a file> file1>=> open>(>'myfile.txt'>,>'w'>)> file1.writelines((L))> file1.close()> # Using readline()> file1>=> open>(>'myfile.txt'>,>'r'>)> count>=> 0> while> True>:> >count>+>=> 1> ># Get next line from file> >line>=> file1.readline()> ># if line is empty> ># end of file is reached> >if> not> line:> >break> >print>(>'Line{}: {}'>.>format>(count, line.strip()))> file1.close()> |
>
pas
>
Sortir:
Line1 Geeks Line2 for Line3 Geeks>
Méthode 3 : lire un fichier ligne par ligne à l’aide de la boucle for
Un objet itérable est renvoyé par la fonction open() lors de l'ouverture d'un fichier. Cette dernière façon de lire un fichier ligne par ligne consiste à parcourir un objet fichier dans une boucle. Ce faisant, nous profitons d'une fonction Python intégrée qui nous permet de parcourir implicitement l'objet fichier en utilisant une boucle for en combinaison avec l'utilisation de l'objet itérable. Cette approche nécessite moins de lignes de code, ce qui constitue toujours la meilleure pratique à suivre.
Exemple:
Python3
# Python program to> # demonstrate reading files> # using for loop> L>=> [>'Geeks
'>,>'for
'>,>'Geeks
'>]> # Writing to file> file1>=> open>(>'myfile.txt'>,>'w'>)> file1.writelines(L)> file1.close()> # Opening file> file1>=> open>(>'myfile.txt'>,>'r'>)> count>=> 0> # Using for loop> print>(>'Using for loop'>)> for> line>in> file1:> >count>+>=> 1> >print>(>'Line{}: {}'>.>format>(count, line.strip()))> # Closing files> file1.close()> |
>
>
Sortir:
Using for loop Line1: Geeks Line2: for Line3: Geeks>
Méthode 4 : Lire un fichier ligne par ligne en utilisant la compréhension de boucle et de liste
Une compréhension de liste se compose de crochets contenant l'expression, qui est exécutée pour chaque élément avec la boucle for pour parcourir chaque élément. Ici, nous allons lire le fichier texte et imprimer les données brutes, y compris le caractère de nouvelle ligne, dans une autre sortie, nous avons supprimé tous les caractères de nouvelle ligne de la liste.
Exemple
Python3
with>open>(>'myfile.txt'>) as f:> >lines>=> [line>for> line>in> f]> print>(lines)> # removing the new line characters> with>open>(>'myfile.txt'>) as f:> >lines>=> [line.rstrip()>for> line>in> f]> print>(lines)> |
>
>
Sortir:
['Geeks ', 'For ', 'Geeks'] ['Geeks', 'For', 'Geeks']>
Avec déclaration
Dans les approches ci-dessus, chaque fois que le fichier est ouvert, il doit être fermé explicitement. Si l'on oublie de fermer le fichier, cela peut introduire plusieurs bugs dans le code, c'est-à-dire que de nombreuses modifications dans les fichiers ne prennent effet que lorsque le fichier est correctement fermé. Pour éviter cela, l'instruction with peut être utilisée. L'instruction With en Python est utilisée dans la gestion des exceptions pour rendre le code plus propre et beaucoup plus lisible. Il simplifie la gestion des ressources communes telles que les flux de fichiers. Observez l'exemple de code suivant sur la façon dont l'utilisation de l'instruction with rend le code plus propre. Il n'est pas nécessaire d'appeler file.close() lors de l'utilisation avec l'instruction. Le avec la déclaration elle-même garantit une acquisition et une libération appropriées des ressources.
Exemple:
Python3
# Python program to> # demonstrate with> # statement> L>=> [>'Geeks
'>,>'for
'>,>'Geeks
'>]> # Writing to file> with>open>(>'myfile.txt'>,>'w'>) as fp:> >fp.writelines(L)> # using readlines()> count>=> 0> print>(>'Using readlines()'>)> with>open>(>'myfile.txt'>) as fp:> >Lines>=> fp.readlines()> >for> line>in> Lines:> >count>+>=> 1> >print>(>'Line{}: {}'>.>format>(count, line.strip()))> # Using readline()> count>=> 0> print>(>'
Using readline()'>)> with>open>(>'myfile.txt'>) as fp:> >while> True>:> >count>+>=> 1> >line>=> fp.readline()> >if> not> line:> >break> >print>(>'Line{}: {}'>.>format>(count, line.strip()))> # Using for loop> count>=> 0> print>(>'
Using for loop'>)> with>open>(>'myfile.txt'>) as fp:> >for> line>in> fp:> >count>+>=> 1> >print>(>'Line{}: {}'>.>format>(count, line.strip()))> |
>
>
Sortir:
Using readlines() Line1: Geeks Line2: for Line3: Geeks Using readline() Line1: Geeks Line2: for Line3: Geeks Using for loop Line1: Geeks Line2: for Line3: Geeks>