1. A propos de file.read()
La méthode file.read() est utilisée pour lire le contenu d'un fichier ouvert en Python. Elle fait partie des méthodes fondamentales pour la gestion de fichiers. Selon qu'on l'appelle sans argument ou avec un argument entier, elle lira tout le fichier ou une quantité spécifique de données. Elle retourne une chaîne de caractères en mode texte ou un objet bytes en mode binaire.
2. Lecture intégrale d'un fichier
L'utilisation la plus simple est d'appeler read() sans argument pour lire tout le contenu du fichier d'un coup. C'est pratique pour les petits fichiers, mais attention pour les fichiers volumineux, cela peut consommer beaucoup de mémoire.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# Créons d'abord un fichier d'exemple with open('exemple.txt', 'w') as f: f.write("Première ligne\nDeuxième ligne\nTroisième ligne") # Lecture intégrale du fichier with open('exemple.txt', 'r') as f: contenu = f.read() print(contenu) # Sortie (output) : # Première ligne # Deuxième ligne # Troisième ligne |
3. Lecture par taille (nombre de caractères/octets)
En passant un argument size à read(), on lit au maximum size caractères (en mode texte) ou size octets (en mode binaire). Cela permet de lire un fichier morceau par morceau, ce qui est idéal pour les gros fichiers.
3.1 Lecture par blocs en mode texte
|
1 2 3 4 5 6 7 8 9 10 11 |
with open('exemple.txt', 'r') as f: # Lecture des 10 premiers caractères bloc = f.read(10) print("Premier bloc:", repr(bloc)) # Lecture des 10 suivants bloc_suivant = f.read(10) print("Second bloc:", repr(bloc_suivant)) # Sortie (output) : # Premier bloc: 'Première l' # Second bloc: 'igne\nDeuxi' |
3.2 Lecture en boucle jusqu'à la fin du fichier
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
with open('exemple.txt', 'r') as f: while True: chunk = f.read(5) # Lecture par petits morceaux de 5 caractères if not chunk: # Si chunk est vide, fin du fichier (EOF) break print("Lu:", repr(chunk)) # Sortie (output) : # Lu: 'Premi' # Lu: 'ère l' # Lu: 'igne\n' # Lu: 'Deuxi' # Lu: 'ème l' # Lu: 'igne\n' # Lu: 'Trois' # Lu: 'ième ' # Lu: 'ligne' |
4. Gestion du pointeur de fichier
Le fichier possède un pointeur de lecture (file pointer) qui indique où on en est dans la lecture. La méthode read() avance ce pointeur. On peut connaître sa position avec tell() et le déplacer avec seek().
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
with open('exemple.txt', 'r') as f: print("Position initiale:", f.tell()) data = f.read(7) print("Lu 7 caractères:", repr(data)) print("Position après lecture:", f.tell()) # Revenir au début f.seek(0) print("Après seek(0):", f.tell()) data2 = f.read(7) print("Lu à nouveau:", repr(data2)) # Sortie (output) : # Position initiale: 0 # Lu 7 caractères: 'Premièr' # Position après lecture: 7 # Après seek(0): 0 # Lu à nouveau: 'Premièr' |
5. Lecture de fichiers binaires
En mode binaire ('rb'), read() retourne des objets bytes et non des chaînes. C'est essentiel pour les images, les sons, ou tout fichier non textuel. L'argument size compte alors en octets.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# Création d'un petit fichier binaire with open('donnees.bin', 'wb') as f: f.write(bytes([0x41, 0x42, 0x43, 0x44, 0x45])) # ABCDE en hexadécimal # Lecture en mode binaire with open('donnees.bin', 'rb') as f: donnees = f.read(3) print("3 premiers octets:", donnees) print("En hexa:", donnees.hex()) reste = f.read() print("Reste du fichier:", reste) # Sortie (output) : # 3 premiers octets: b'ABC' # En hexa: 414243 # Reste du fichier: b'DE' |
6. Bonnes pratiques et cas particuliers
Quelques points importants à retenir avec read() :
- Utilisez toujours with open(...) as f pour garantir la fermeture automatique du fichier.
- Si vous lisez un fichier texte avec un encodage spécifique (UTF-8, Latin-1, etc.), précisez-le via l'argument encoding.
- Si read() retourne une chaîne vide, c'est que le pointeur est à la fin du fichier (EOF).
6.1 Spécification de l'encodage
|
1 2 3 4 5 6 7 8 9 10 |
# Fichier avec accents (UTF-8) with open('accent.txt', 'w', encoding='utf-8') as f: f.write("Éléphant à la plage") with open('accent.txt', 'r', encoding='utf-8') as f: contenu = f.read() print(contenu) # Sortie (output) : # Éléphant à la plage |
6.2 Comportement avec un fichier vide
|
1 2 3 4 5 6 7 8 9 10 11 12 |
with open('vide.txt', 'w') as f: pass # Crée un fichier vide with open('vide.txt', 'r') as f: data = f.read() print("Contenu du fichier vide:", repr(data)) if data == '': print("Le fichier est vide (fin immédiate).") # Sortie (output) : # Contenu du fichier vide: '' # Le fichier est vide (fin immédiate). |
Récapitulatif : file.read() est la méthode de base pour extraire des données d'un fichier en Python. Que ce soit pour tout lire d'un coup ou pour traiter le fichier par morceaux, elle reste un outil indispensable.
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/



