- À propos de la lecture et de l'écriture avec pathlib
- Créer un chemin vers un fichier avec Path
- Écrire du texte avec Path.write_text()
- Lire un fichier avec Path.read_text()
- Utiliser l'encodage UTF-8
- Écrire plusieurs lignes dans un fichier
- Ajouter du contenu à un fichier
- Lire un fichier ligne par ligne
- Lire et écrire des données binaires
- Vérifier l'existence du fichier avant la lecture
- Gérer les erreurs de lecture et d'écriture
- A retenir !
1. À propos de la lecture et de l'écriture avec pathlib
Le module pathlib permet de manipuler les chemins, les fichiers et les dossiers avec une approche orientée objet. La classe Path possède notamment des méthodes permettant de lire et d'écrire directement le contenu d'un fichier.
Pour les fichiers texte, les deux méthodes principales sont read_text() et write_text(). Pour les fichiers binaires, pathlib fournit également read_bytes() et write_bytes().
Le programme suivant importe la classe Path et crée un chemin représentant le fichier cours.txt.
1 2 3 4 | from pathlib import Path fichier = Path("cours.txt") print(fichier) |
Sortie :
1 | cours.txt |
2. Créer un chemin vers un fichier avec Path
Avant de lire ou d'écrire un fichier avec pathlib, nous créons généralement un objet Path représentant son chemin. La création de cet objet ne crée pas automatiquement le fichier sur le disque.
Le programme suivant crée un chemin vers le fichier cours.txt situé dans le dossier documents.
1 2 3 4 | from pathlib import Path fichier = Path("documents") / "cours.txt" print(fichier) |
Sortie :
1 | documents/cours.txt |
Nous pouvons également fournir les différentes parties du chemin directement à Path().
1 2 3 4 | from pathlib import Path fichier = Path("documents", "python", "cours.txt") print(fichier) |
Sortie :
1 | documents/python/cours.txt |
3. Écrire du texte avec Path.write_text()
La méthode Path.write_text() permet d'écrire une chaîne de caractères dans un fichier texte. Si le fichier n'existe pas, il est créé. S'il existe déjà, son contenu est remplacé.
Le programme suivant écrit le texte Bienvenue au cours Python dans le fichier cours.txt. La méthode retourne le nombre de caractères écrits.
1 2 3 4 5 6 | from pathlib import Path fichier = Path("cours.txt") nombre = fichier.write_text("Bienvenue au cours Python", encoding="utf-8") print("Nombre de caractères écrits :", nombre) |
Sortie :
1 | Nombre de caractères écrits : 25 |
Le fichier cours.txt contient alors :
1 | Bienvenue au cours Python |
Il faut retenir que write_text() ne fonctionne pas comme un mode d'ajout. Un nouvel appel remplace le contenu précédent du fichier.
4. Lire un fichier avec Path.read_text()
La méthode Path.read_text() permet de lire entièrement un fichier texte et retourne son contenu sous forme de chaîne de caractères.
Supposons que cours.txt contienne le texte Bienvenue au cours Python. Le programme suivant lit puis affiche son contenu.
1 2 3 4 5 6 | from pathlib import Path fichier = Path("cours.txt") contenu = fichier.read_text(encoding="utf-8") print(contenu) |
Sortie :
1 | Bienvenue au cours Python |
Nous pouvons également utiliser directement le résultat de read_text() sans passer par une variable intermédiaire.
1 2 3 4 | from pathlib import Path fichier = Path("cours.txt") print(fichier.read_text(encoding="utf-8")) |
Sortie :
1 | Bienvenue au cours Python |
5. Utiliser l'encodage UTF-8
Lors de la manipulation de fichiers texte, il est recommandé de préciser explicitement l'encodage. L'encodage UTF-8 permet notamment de gérer correctement les caractères accentués et de nombreux alphabets.
Le programme suivant écrit un texte contenant plusieurs caractères accentués en utilisant encoding="utf-8".
1 2 3 4 5 6 | from pathlib import Path fichier = Path("message.txt") fichier.write_text("Écrire et lire un fichier en français.", encoding="utf-8") print("Fichier enregistré.") |
Sortie :
1 | Fichier enregistré. |
Pour relire correctement le fichier, nous utilisons le même encodage avec read_text().
1 2 3 4 5 6 | from pathlib import Path fichier = Path("message.txt") texte = fichier.read_text(encoding="utf-8") print(texte) |
Sortie :
1 | Écrire et lire un fichier en français. |
6. Écrire plusieurs lignes dans un fichier
La méthode write_text() reçoit une chaîne de caractères. Pour écrire plusieurs lignes, nous pouvons donc insérer le caractère spécial \n entre les différentes lignes.
Le programme suivant crée un fichier contenant trois lignes.
1 2 3 4 5 6 7 | from pathlib import Path fichier = Path("cours.txt") texte = "Python\nJava\nJavaScript" fichier.write_text(texte, encoding="utf-8") print("Les lignes ont été écrites.") |
Sortie :
1 | Les lignes ont été écrites. |
Le fichier cours.txt contient :
1 2 3 | Python Java JavaScript |
Nous pouvons également partir d'une liste et utiliser join() pour construire automatiquement le texte à écrire.
1 2 3 4 5 6 7 | from pathlib import Path langages = ["Python", "Java", "PHP", "JavaScript"] texte = "\n".join(langages) Path("langages.txt").write_text(texte, encoding="utf-8") print("Fichier créé.") |
Sortie :
1 | Fichier créé. |
Le fichier langages.txt contient :
1 2 3 4 | Python Java PHP JavaScript |
7. Ajouter du contenu à un fichier
La méthode write_text() remplace le contenu existant et ne possède pas de paramètre correspondant directement au mode d'ajout a. Pour ajouter du contenu sans effacer le texte existant, nous pouvons utiliser la méthode Path.open() avec le mode "a".
Le programme suivant ajoute une nouvelle ligne à la fin du fichier cours.txt.
1 2 3 4 5 6 7 8 | from pathlib import Path fichier = Path("cours.txt") with fichier.open("a", encoding="utf-8") as f: f.write("\nDjango") print("Contenu ajouté.") |
Sortie :
1 | Contenu ajouté. |
Si le fichier contenait auparavant les lignes Python, Java et JavaScript, son contenu devient :
1 2 3 4 | Python Java JavaScript Django |
L'utilisation de with permet de fermer automatiquement le fichier après l'opération.
8. Lire un fichier ligne par ligne
La méthode read_text() charge tout le contenu du fichier en mémoire. Pour parcourir un fichier ligne par ligne, notamment lorsqu'il est volumineux, nous pouvons utiliser Path.open() avec le mode de lecture "r".
Le programme suivant ouvre cours.txt puis parcourt ses lignes avec une boucle for.
1 2 3 4 5 6 7 | from pathlib import Path fichier = Path("cours.txt") with fichier.open("r", encoding="utf-8") as f: for ligne in f: print(ligne.strip()) |
Sortie possible :
1 2 3 4 | Python Java JavaScript Django |
La méthode strip() supprime ici le caractère de fin de ligne avant l'affichage afin d'éviter des lignes vides supplémentaires produites par print().
9. Lire et écrire des données binaires
Les fichiers ne contiennent pas toujours du texte. Pour manipuler des données binaires, la classe Path fournit les méthodes write_bytes() et read_bytes().
La méthode write_bytes() écrit un objet de type bytes dans un fichier et retourne le nombre d'octets écrits.
1 2 3 4 5 6 | from pathlib import Path fichier = Path("donnees.bin") nombre = fichier.write_bytes(b"Python") print("Octets écrits :", nombre) |
Sortie :
1 | Octets écrits : 6 |
La méthode read_bytes() permet ensuite de récupérer les données binaires enregistrées dans le fichier.
1 2 3 4 5 6 | from pathlib import Path fichier = Path("donnees.bin") donnees = fichier.read_bytes() print(donnees) |
Sortie :
1 | b'Python' |
10. Vérifier l'existence du fichier avant la lecture
Si nous utilisons read_text() sur un fichier inexistant, Python déclenche une exception. La méthode exists() permet de vérifier l'existence du chemin avant la lecture.
Le programme suivant lit cours.txt uniquement si le chemin existe.
1 2 3 4 5 6 7 8 9 | from pathlib import Path fichier = Path("cours.txt") if fichier.exists(): contenu = fichier.read_text(encoding="utf-8") print(contenu) else: print("Le fichier n'existe pas.") |
Sortie possible :
1 2 3 | Python Java JavaScript |
Pour vérifier que le chemin correspond réellement à un fichier ordinaire, nous pouvons utiliser is_file() à la place de exists().
1 2 3 4 5 6 7 8 | from pathlib import Path fichier = Path("cours.txt") if fichier.is_file(): print(fichier.read_text(encoding="utf-8")) else: print("Le fichier est introuvable.") |
Sortie possible si le fichier n'existe pas :
1 | Le fichier est introuvable. |
11. Gérer les erreurs de lecture et d'écriture
Une opération de lecture ou d'écriture peut échouer pour différentes raisons : fichier inexistant, permissions insuffisantes ou chemin incorrect. Une structure try...except permet de gérer ces erreurs sans interrompre brutalement le programme.
Le programme suivant intercepte FileNotFoundError lorsque le fichier demandé n'existe pas.
1 2 3 4 5 6 7 8 9 | from pathlib import Path fichier = Path("inconnu.txt") try: contenu = fichier.read_text(encoding="utf-8") print(contenu) except FileNotFoundError: print("Le fichier n'existe pas.") |
Sortie :
1 | Le fichier n'existe pas. |
Lors d'une écriture, nous pouvons également intercepter une erreur de permission avec PermissionError.
1 2 3 4 5 6 7 8 9 | from pathlib import Path fichier = Path("cours.txt") try: fichier.write_text("Cours Python", encoding="utf-8") print("Écriture terminée.") except PermissionError: print("Permission refusée.") |
Sortie possible :
1 | Écriture terminée. |
12. A retenir !
Le module pathlib permet de lire et d'écrire facilement des fichiers en utilisant les méthodes de la classe Path.
- Path() permet de représenter le chemin d'un fichier.
- write_text() écrit du texte dans un fichier et remplace son contenu existant.
- read_text() lit entièrement un fichier texte.
- encoding="utf-8" permet de préciser l'encodage des fichiers texte.
- \n permet d'insérer un saut de ligne dans une chaîne.
- Path.open() permet d'utiliser les modes classiques comme "r", "w" et "a".
- Le mode "a" permet d'ajouter du contenu à la fin d'un fichier.
- Path.open() permet de parcourir efficacement un fichier ligne par ligne.
- write_bytes() permet d'écrire des données binaires.
- read_bytes() permet de lire des données binaires.
- is_file() permet de vérifier qu'un chemin représente un fichier.
- try...except permet de gérer les erreurs de lecture et d'écriture.
Le programme suivant résume une opération complète : écrire du texte dans un fichier, vérifier son existence puis relire son contenu.
1 2 3 4 5 6 7 8 | from pathlib import Path fichier = Path("cours.txt") fichier.write_text("Python\nDjango\nFlask", encoding="utf-8") if fichier.is_file(): contenu = fichier.read_text(encoding="utf-8") print(contenu) |
Sortie :
1 2 3 | Python Django Flask |
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/


