GeeksforGeeks
Prérequis :
- Modes d’accès
- Ouvrir un fichier
- Fermer un fichier
Python fournit des fonctions intégrées pour créer, écrire et lire des fichiers. Il existe deux types de fichiers qui peuvent être manipulés en python, les fichiers texte normaux et les fichiers binaires (écrits en langage binaire, des 0 et des 1). Dans cet article, nous allons étudier la lecture ligne par ligne d’un fichier.
Lecture ligne par ligne
Utilisation de readlines()
readlines() est utilisée pour lire toutes les lignes en une seule fois et les retourner comme chaque ligne un élément de chaîne de caractères dans une liste. Cette fonction peut être utilisée pour les petits fichiers, car elle lit tout le contenu du fichier en mémoire, puis le divise en lignes distinctes. Nous pouvons itérer sur la liste et dépouiller le caractère de nouvelle ligne ‘\n’ en utilisant la fonction strip().
Exemple :
L
=
file1
=
open
(
'myfile.txt'
,
'w'
)
file1.writelines(L)
.
file1.close()
file1
=
open
(
'myfile.txt'
,
'r'
)
Lines
=
file1.readlines()
count
=
0
for
line
in
Lines:
.
count
+
=
1
.
print
(
"Line{}: {}"
.
format
(count, line.strip()))
.
Sortie :
Line1: GeeksLine2: forLine3: Geeks
Utilisation de readline()
La fonction readline() lit une ligne du fichier et la renvoie sous la forme de la chaîne de caractères. Elle prend un paramètre n, qui spécifie le nombre maximum d’octets qui seront lus. Cependant, elle ne lit pas plus d’une ligne, même si n dépasse la longueur de la ligne. Elle sera efficace lors de la lecture d’un grand fichier car au lieu de récupérer toutes les données en une seule fois, elle les 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, elle renvoie une chaîne vide.
Exemple :
.
L
=
file1
=
open
(
'myfile.txt'
,
'w'
)
file1.writelines((L))
file1.close()
file1
=
open
(
'myfile.txt'
,
'r'
)
count
=
0
while
True
:
count
+
=
1
line
=
file1.readline()
if
not
line:
break
print
(
"Line{}: {}"
.
format
(count, line.strip()))
file1.close()
.
Sortie :
Line1 GeeksLine2 forLine3 Geeks
Utilisation de la boucle for
Un objet itérable est retourné par la fonction open() lors de l’ouverture d’un fichier. Cette dernière façon de lire un fichier ligne par ligne comprend l’itération sur un objet fichier dans une boucle for. Pour ce faire, nous profitons d’une fonction Python intégrée qui nous permet d’itérer sur l’objet fichier de manière implicite en utilisant une boucle for en combinaison avec l’objet itérable. Cette approche prend moins de lignes de code, ce qui est toujours la meilleure pratique digne d’être suivie.
Exemple :
.
L
=
file1
=
open
(
'myfile.txt'
,
'w'
)
file1.writelines(L)
file1.close()
file1
=
open
(
'myfile.txt'
,
'r'
)
count
=
. print
(
"Using for loop"
)
for
line
in
file1:
count
+
=
1
print
(
"Line{}: {}"
.
format
(count, line.strip()))
file1.close()
Sortie :
Using for loopLine1: GeeksLine2: forLine3: Geeks
Avec l’instruction
Dans les approches ci-dessus, chaque fois que le fichier est ouvert, il est nécessaire de le fermer explicitement. Si l’on oublie de fermer le fichier, cela peut introduire plusieurs bogues dans le code, c’est-à-dire que de nombreuses modifications dans les fichiers ne prennent pas effet tant que le fichier n’est pas correctement fermé. Pour éviter cela, on peut utiliser l’instruction With. L’instruction With en Python est utilisée dans la gestion des exceptions pour rendre le code plus propre et beaucoup plus lisible. Elle simplifie la gestion des ressources communes comme les flux de fichiers. Observez l’exemple de code suivant qui montre comment l’utilisation de l’instruction with rend le code plus propre. Il n’est pas nécessaire d’appeler file.close() lorsque vous utilisez l’instruction with. L’instruction with the elle-même assure une acquisition et une libération appropriées des ressources.
Exemple :
.
L
=
with
open
(
"myfile.txt"
,
"w"
) as fp:
fp.writelines(L)
count
=
print
(
"Using readlines()"
)
with
open
(
"myfile.txt"
) as fp:
Lines
=
fp.readlines()
for
line
in
Lines:
count
+
=
1
print
(
"Line{}: {}"
.
format
(count, line.strip()))
count
=
0
print
(
"\nUsing readline()"
)
with
open
(
"myfile.txt"
) as fp:
while
True
:
count
+
=
1
line
=
fp.readline()
if
not
line:
break
print
(
"Line{}: {}"
.
format
(count, line.strip()))
count
=
0
print
(
"\nUsing for loop"
)
with
open
(
"myfile.txt"
) as fp:
for
line
in
fp:
count
+
=
1
print
(
"Line{}: {}"
.
format
(count, line.strip()))
Sortie :
Using readlines()Line1: GeeksLine2: forLine3: GeeksUsing readline()Line1: GeeksLine2: forLine3: GeeksUsing for loopLine1: GeeksLine2: forLine3: Geeks
.