1. À propos de la métgode readline()
La méthode readline() est utilisée pour lire une ligne entière depuis un fichier ouvert.
Elle renvoie une chaîne de caractères (str) contenant la ligne, incluant le caractère de saut de ligne \n.
Lorsqu’elle arrive à la fin du fichier, elle retourne une chaîne vide "", ce qui permet de l’utiliser dans une boucle conditionnelle.
2. Lecture simple d’un fichier ligne par ligne avec readline()
2.1 Création d’un fichier de démonstration
Avant de lire, nous créons un petit fichier texte en mémoire. En pratique, vous lirez un fichier existant.
|
1 2 3 4 5 6 7 |
# Création d'un fichier exemple (simulé avec 'with' et 'write') with open("exemple.txt", "w", encoding="utf-8") as f: f.write("Première ligne importante\n") f.write("Deuxième ligne avec des données\n") f.write("Troisième ligne — fin provisoire\n") # Le fichier "exemple.txt" contient 3 lignes |
2.2 Utilisation basique de readline()
Ouvrons le fichier en lecture et appelons readline() trois fois de suite pour lire les trois lignes.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
f = open("exemple.txt", "r", encoding="utf-8") ligne1 = f.readline() # première lecture ligne2 = f.readline() # seconde lecture ligne3 = f.readline() # troisième lecture ligne4 = f.readline() # au delà de la fin du fichier f.close() print(repr(ligne1)) # affichage "brut" avec caractères d'échappement print(repr(ligne2)) print(repr(ligne3)) print(repr(ligne4)) # Output (sortie réelle) : # 'Première ligne importante\n' # 'Deuxième ligne avec des données\n' # 'Troisième ligne — fin provisoire\n' # '' |
Observation : la quatrième lecture retourne une chaîne vide, signe que le curseur est à la fin du fichier (EOF).
3. Lecture complète sans connaître le nombre de lignes
3.1 Boucle while avec condition de chaîne vide
La méthode idiomatique pour lire toutes les lignes avec readline() est d'utiliser une boucle qui s'arrête quand la ligne lue est vide (fin de fichier).
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
f = open("exemple.txt", "r", encoding="utf-8") while True: ligne = f.readline() if ligne == "": break # Traitement : on retire le saut de ligne avec strip() pour l'affichage print("Lu :", ligne.strip()) f.close() # Output : # Lu : Première ligne importante # Lu : Deuxième ligne avec des données # Lu : Troisième ligne — fin provisoire |
3.2 Attention : une ligne vide dans le fichier
Si le fichier contient une ligne vide, readline() retournera "\n" (une chaîne avec un saut de ligne), pas une chaîne vide. La condition d'arrêt doit donc uniquement tester == "" (EOF).
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# Création d'un fichier avec une ligne vide with open("test_vide.txt", "w") as f: f.write("ligne 1\n") f.write("\n") # ligne vide explicite f.write("ligne 3\n") f = open("test_vide.txt", "r") while True: l = f.readline() if l == "": # seul l'EOF donne "" , pas "\n" break print(repr(l)) # affichage brut pour voir le '\n' f.close() # Output : # 'ligne 1\n' # '\n' # 'ligne 3\n' |
4. Aller plus loin : position, seek() et alternative Pythonique
4.1 Suivre la position dans le fichier avec tell()
La méthode tell() renvoie la position actuelle du curseur dans le fichier (en octets depuis le début). Utile pour revenir en arrière avec seek().
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
f = open("exemple.txt", "r") print("Position initiale :", f.tell()) # 0 ligne = f.readline() print("Après readline() :", f.tell()) # dépend de la longueur de la ligne f.seek(0) # retour au début print("Après seek(0) :", f.tell()) # 0 debut = f.readline().strip() print("Relecture :", debut) f.close() # Output (les valeurs numériques peuvent varier selon l'encodage) : # Position initiale : 0 # Après readline() : 27 (exemple) # Après seek(0) : 0 # Relecture : Première ligne importante |
4.2 L'approche Pythonique : itération directe sur l'objet fichier
Bien que readline() soit explicite, la manière recommandée de lire ligne par ligne en Python est d'itérer directement sur l'objet fichier (qui est un itérateur). C'est plus lisible et souvent plus performant.
|
1 2 3 4 5 6 7 8 |
with open("exemple.txt", "r") as f: for ligne in f: # itération implicite : équivalent à readline() en interne print("Itéré :", ligne.strip()) # Output : # Itéré : Première ligne importante # Itéré : Deuxième ligne avec des données # Itéré : Troisième ligne — fin provisoire |
4.3 Lire un nombre limité de caractères avec readline(n)
readline() accepte un argument optionnel n : il lira au maximum n caractères (ou jusqu'à la fin de la ligne). Cela permet de lire partiellement une très longue ligne sans tout charger en mémoire.
|
1 2 3 4 5 6 7 8 9 |
with open("exemple.txt", "r") as f: extrait = f.readline(5) # lit au plus 5 caractères de la première ligne print("Extrait (5 premiers caractères) :", extrait) reste = f.readline() # continue la même ligne print("Reste de la ligne :", reste.strip()) # Output : # Extrait (5 premiers caractères) : Premi # Reste de la ligne : ère ligne importante |
En résumé : readline() est une méthode de base pour lire ligne à ligne.
Elle reste utile quand on a besoin d'un contrôle fin (taille maximale, mélange avec tell()/seek()),
mais pour la plupart des cas, l'itération directe avec for ligne in fichier est plus simple et plus sûre.
Auteur : Younes Derfoufi
Lieu de travail : CRMEF OUJDA
Site Web : www.tresfacile.net
Chaine YouTube : https://www.youtube.com/user/InformatiquesFacile
Me contacter : https://www.tresfacile.net/me-contacter/



