- À propos de pathlib.Path
- Créer un chemin avec Path
- Obtenir le répertoire courant avec Path.cwd()
- Obtenir le dossier personnel avec Path.home()
- Construire et combiner des chemins
- Accéder aux différentes parties d'un chemin
- Manipuler le nom et l'extension d'un fichier
- Tester l'existence et la nature d'un chemin
- Transformer un chemin relatif en chemin absolu
- Parcourir les éléments d'un dossier
- Modifier un chemin avec with_name() et with_suffix()
- A retenir !
1. À propos de pathlib.Path
Le module pathlib de Python fournit une manière moderne et orientée objet de travailler avec les chemins de fichiers et de dossiers. Sa classe principale est Path.
Contrairement à certaines fonctions du module os.path qui manipulent principalement les chemins sous forme de chaînes de caractères, Path représente un chemin par un véritable objet Python possédant de nombreuses méthodes et propriétés.
La classe Path est importée depuis le module pathlib avec l'instruction from pathlib import Path. Le programme suivant réalise cette importation puis affiche la classe utilisée.
1 2 3 | from pathlib import Path print(Path) |
Sortie :
1 | <class 'pathlib.Path'> |
L'utilisation de Path rend généralement le code plus lisible, notamment lorsqu'il faut construire, analyser ou manipuler plusieurs chemins.
2. Créer un chemin avec Path
Pour créer un objet Path, il suffit de fournir un chemin à la classe Path(). Ce chemin peut désigner un fichier ou un dossier et il n'est pas nécessaire que l'élément existe réellement pour créer l'objet.
Le programme suivant crée un chemin relatif vers le fichier cours.txt situé dans le dossier documents.
1 2 3 4 | from pathlib import Path chemin = Path("documents/cours.txt") print(chemin) |
Sortie :
1 | documents/cours.txt |
Nous pouvons également fournir séparément plusieurs parties du chemin. Path se charge alors de les assembler correctement.
1 2 3 4 | from pathlib import Path chemin = Path("documents", "python", "cours.txt") print(chemin) |
Sortie :
1 | documents/python/cours.txt |
Le séparateur réellement utilisé lors de l'affichage dépend du système d'exploitation. Sous Windows, il peut par exemple apparaître sous la forme documents\python\cours.txt.
3. Obtenir le répertoire courant avec Path.cwd()
La méthode Path.cwd() permet d'obtenir le répertoire de travail courant du programme Python. Elle joue un rôle comparable à os.getcwd(), mais retourne directement un objet Path.
Le programme suivant récupère et affiche le dossier depuis lequel le programme est exécuté.
1 2 3 4 | from pathlib import Path dossier = Path.cwd() print(dossier) |
Sortie possible sous Windows :
1 | C:\Users\Utilisateur\Documents\Python |
Le résultat dépend naturellement du dossier courant au moment de l'exécution du programme.
4. Obtenir le dossier personnel avec Path.home()
La méthode Path.home() permet d'obtenir le chemin du dossier personnel de l'utilisateur courant. Cette méthode évite d'écrire manuellement un chemin qui pourrait changer d'un ordinateur ou d'un utilisateur à l'autre.
Le programme suivant affiche le dossier personnel de l'utilisateur.
1 2 3 4 | from pathlib import Path dossier = Path.home() print(dossier) |
Sortie possible sous Windows :
1 | C:\Users\Utilisateur |
Sous Linux, le résultat peut par exemple être /home/utilisateur.
Nous pouvons ensuite construire un chemin à partir de ce dossier personnel. L'exemple suivant désigne le fichier cours.txt dans un dossier Documents.
1 2 3 4 | from pathlib import Path chemin = Path.home() / "Documents" / "cours.txt" print(chemin) |
Sortie possible sous Windows :
1 | C:\Users\Utilisateur\Documents\cours.txt |
5. Construire et combiner des chemins
L'un des avantages importants de Path est la possibilité de construire un chemin avec l'opérateur /. Il n'est donc pas nécessaire de concaténer manuellement les chaînes ou d'ajouter les séparateurs de dossiers.
Le programme suivant construit progressivement un chemin vers un fichier Python.
1 2 3 4 5 6 | from pathlib import Path dossier = Path("documents") chemin = dossier / "python" / "cours.py" print(chemin) |
Sortie :
1 | documents/python/cours.py |
Cette écriture est particulièrement lisible et Path utilise automatiquement le format de chemin adapté au système d'exploitation.
Nous pouvons également combiner un objet Path avec des variables contenant les différentes parties du chemin.
1 2 3 4 5 6 7 | from pathlib import Path dossier = "python" fichier = "listes.py" chemin = Path("documents") / dossier / fichier print(chemin) |
Sortie :
1 | documents/python/listes.py |
6. Accéder aux différentes parties d'un chemin
Un objet Path possède plusieurs propriétés permettant d'analyser facilement les différentes parties d'un chemin. Parmi les plus utiles, nous trouvons name, parent, parts et anchor.
La propriété name retourne le dernier élément du chemin, tandis que parent retourne son dossier parent.
1 2 3 4 5 6 | from pathlib import Path chemin = Path("documents/python/cours.pdf") print("Nom :", chemin.name) print("Parent :", chemin.parent) |
Sortie :
1 2 | Nom : cours.pdf Parent : documents/python |
La propriété parts permet d'obtenir les différentes composantes du chemin sous forme d'un tuple.
1 2 3 4 | from pathlib import Path chemin = Path("documents/python/cours.pdf") print(chemin.parts) |
Sortie possible :
1 | ('documents', 'python', 'cours.pdf') |
La propriété anchor représente l'ancrage d'un chemin absolu, par exemple la racine / sous Unix ou une unité comme C:\ sous Windows.
7. Manipuler le nom et l'extension d'un fichier
La classe Path fournit des propriétés très pratiques pour analyser le nom d'un fichier. name retourne son nom complet, stem retourne le nom sans la dernière extension et suffix retourne la dernière extension.
Le programme suivant analyse le chemin d'un fichier PDF.
1 2 3 4 5 6 7 | from pathlib import Path chemin = Path("documents/python/cours.pdf") print("Nom :", chemin.name) print("Nom sans extension :", chemin.stem) print("Extension :", chemin.suffix) |
Sortie :
1 2 3 | Nom : cours.pdf Nom sans extension : cours Extension : .pdf |
Pour un fichier possédant plusieurs suffixes, la propriété suffixes permet de récupérer l'ensemble des suffixes.
1 2 3 4 5 6 | from pathlib import Path chemin = Path("sauvegarde.tar.gz") print("Dernier suffixe :", chemin.suffix) print("Tous les suffixes :", chemin.suffixes) |
Sortie :
1 2 | Dernier suffixe : .gz Tous les suffixes : ['.tar', '.gz'] |
8. Tester l'existence et la nature d'un chemin
La classe Path permet également d'interroger directement le système de fichiers. La méthode exists() vérifie si un chemin existe, is_file() vérifie s'il correspond à un fichier et is_dir() vérifie s'il correspond à un dossier.
Le programme suivant vérifie l'existence du fichier cours.txt.
1 2 3 4 5 6 7 8 | from pathlib import Path chemin = Path("cours.txt") if chemin.exists(): print("Le chemin existe.") else: print("Le chemin n'existe pas.") |
Sortie possible :
1 | Le chemin existe. |
Nous pouvons ensuite déterminer si le chemin représente un fichier ou un dossier.
1 2 3 4 5 6 7 8 9 10 | from pathlib import Path chemin = Path("documents") if chemin.is_file(): print("C'est un fichier.") elif chemin.is_dir(): print("C'est un dossier.") else: print("Le chemin n'existe pas.") |
Sortie possible :
1 | C'est un dossier. |
9. Transformer un chemin relatif en chemin absolu
Un chemin relatif est interprété à partir du répertoire de travail courant. La méthode absolute() permet d'obtenir une représentation absolue du chemin sans exiger que la cible existe.
Le programme suivant transforme le chemin relatif documents/cours.txt en chemin absolu.
1 2 3 4 5 6 | from pathlib import Path chemin = Path("documents/cours.txt") chemin_absolu = chemin.absolute() print(chemin_absolu) |
Sortie possible sous Windows :
1 | C:\Users\Utilisateur\Python\documents\cours.txt |
La méthode resolve() permet également d'obtenir un chemin absolu et effectue en plus une résolution du chemin, notamment des éléments tels que .. et des liens symboliques selon la plateforme.
1 2 3 4 | from pathlib import Path chemin = Path("documents/python/../cours.txt") print(chemin.resolve()) |
Sortie possible :
1 | C:\Users\Utilisateur\Python\documents\cours.txt |
10. Parcourir les éléments d'un dossier
La méthode iterdir() permet de parcourir les éléments directement contenus dans un dossier. Chaque élément retourné est lui-même un objet Path.
Supposons que le dossier documents contienne deux fichiers et deux sous-dossiers. Le programme suivant affiche chacun de ses éléments.
1 2 3 4 5 6 | from pathlib import Path dossier = Path("documents") for element in dossier.iterdir(): print(element) |
Sortie possible :
1 2 3 4 | documents/cours.txt documents/notes.pdf documents/python documents/images |
Nous pouvons combiner iterdir() avec is_file() afin d'afficher uniquement les fichiers du dossier.
1 2 3 4 5 6 7 | from pathlib import Path dossier = Path("documents") for element in dossier.iterdir(): if element.is_file(): print(element.name) |
Sortie possible :
1 2 | cours.txt notes.pdf |
La méthode iterdir() ne réalise pas un parcours récursif. Pour rechercher des fichiers dans les sous-dossiers, Path fournit notamment les méthodes glob() et rglob().
11. Modifier un chemin avec with_name() et with_suffix()
La méthode with_name() permet de créer un nouveau chemin en remplaçant le dernier nom du chemin. Elle ne renomme pas réellement le fichier sur le disque : elle construit simplement un nouvel objet Path.
Le programme suivant remplace cours.txt par exercices.txt.
1 2 3 4 5 6 | from pathlib import Path chemin = Path("documents/cours.txt") nouveau = chemin.with_name("exercices.txt") print(nouveau) |
Sortie :
1 | documents/exercices.txt |
La méthode with_suffix() permet de remplacer le suffixe final d'un chemin. Nous pouvons ainsi construire un nouveau chemin utilisant une autre extension.
1 2 3 4 5 6 | from pathlib import Path chemin = Path("documents/cours.txt") nouveau = chemin.with_suffix(".pdf") print(nouveau) |
Sortie :
1 | documents/cours.pdf |
Il est important de comprendre que ces méthodes ne modifient pas le fichier lui-même. Elles retournent simplement un nouvel objet Path représentant le chemin modifié.
12. A retenir !
La classe Path du module pathlib offre une approche moderne et pratique pour créer, analyser et manipuler les chemins en Python.
- Path() permet de créer un objet représentant un chemin.
- Path.cwd() retourne le répertoire de travail courant.
- Path.home() retourne le dossier personnel de l'utilisateur.
- L'opérateur / permet de combiner facilement plusieurs parties d'un chemin.
- name retourne le dernier nom du chemin.
- parent retourne le dossier parent.
- stem retourne le nom d'un fichier sans son dernier suffixe.
- suffix et suffixes permettent d'obtenir les extensions.
- exists(), is_file() et is_dir() permettent d'interroger le système de fichiers.
- absolute() et resolve() permettent d'obtenir des chemins absolus.
- iterdir() permet de parcourir directement le contenu d'un dossier.
- with_name() et with_suffix() permettent de construire des variantes d'un chemin.
Le programme suivant résume plusieurs opérations courantes réalisées avec Path. Il construit un chemin puis affiche différentes informations à son sujet.
1 2 3 4 5 6 7 8 9 10 | from pathlib import Path chemin = Path("documents") / "python" / "cours.pdf" print("Chemin :", chemin) print("Nom :", chemin.name) print("Parent :", chemin.parent) print("Nom sans extension :", chemin.stem) print("Extension :", chemin.suffix) print("Chemin absolu :", chemin.absolute()) |
Sortie possible :
1 2 3 4 5 6 | Chemin : documents/python/cours.pdf Nom : cours.pdf Parent : documents/python Nom sans extension : cours Extension : .pdf Chemin absolu : C:\Users\Utilisateur\Python\documents\python\cours.pdf |
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/


