- À propos des chemins absolus avec pathlib
- Différence entre chemin relatif et chemin absolu
- Obtenir un chemin absolu avec Path.absolute()
- Obtenir un chemin absolu avec Path.resolve()
- Différence entre absolute() et resolve()
- Obtenir le chemin absolu du répertoire courant
- Obtenir le chemin absolu d'un fichier
- Tester si un chemin est absolu avec is_absolute()
- Construire et manipuler des chemins absolus
- À retenir
1. À propos des chemins absolus avec pathlib
Le module pathlib fournit la classe Path permettant de manipuler les chemins des fichiers et des dossiers avec une approche orientée objet. Il permet notamment de travailler facilement avec les chemins relatifs et les chemins absolus.
Un chemin absolu indique l'emplacement complet d'un fichier ou d'un dossier à partir de la racine du système de fichiers. Il ne dépend donc pas du répertoire courant du programme.
Le programme suivant crée simplement un objet Path représentant un chemin relatif.
1 2 3 4 | from pathlib import Path chemin = Path("documents/cours.txt") print(chemin) |
Sortie :
1 | documents/cours.txt |
Ce chemin est relatif car il ne précise pas l'emplacement complet du fichier sur le système.
2. Différence entre chemin relatif et chemin absolu
Un chemin relatif est interprété à partir du répertoire courant du programme. Par exemple, le chemin documents/cours.txt signifie que le dossier documents doit être recherché à partir du répertoire courant.
Le programme suivant affiche un chemin relatif puis vérifie s'il est absolu avec is_absolute().
1 2 3 4 5 6 | from pathlib import Path chemin = Path("documents/cours.txt") print("Chemin :", chemin) print("Chemin absolu :", chemin.is_absolute()) |
Sortie :
1 2 | Chemin : documents/cours.txt Chemin absolu : False |
Un chemin absolu contient au contraire toutes les informations nécessaires pour localiser l'élément. Sous Windows, il commence généralement par une lettre de lecteur comme C:\.
Le programme suivant crée directement un chemin absolu sous Windows.
1 2 3 4 5 6 | from pathlib import Path chemin = Path("C:/Users/dell/Documents/cours.txt") print("Chemin :", chemin) print("Chemin absolu :", chemin.is_absolute()) |
Sortie sous Windows :
1 2 | Chemin : C:\Users\dell\Documents\cours.txt Chemin absolu : True |
3. Obtenir un chemin absolu avec Path.absolute()
La méthode Path.absolute() permet d'obtenir une version absolue d'un chemin. Lorsqu'elle est appliquée à un chemin relatif, celui-ci est complété à partir du répertoire courant.
Supposons que le programme soit exécuté depuis le dossier C:\Users\dell\Python. 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\dell\Python\documents\cours.txt |
La méthode absolute() retourne un nouvel objet Path. L'objet d'origine n'est pas modifié.
1 2 3 4 5 6 7 | from pathlib import Path chemin = Path("documents/cours.txt") chemin_absolu = chemin.absolute() print("Original :", chemin) print("Absolu :", chemin_absolu) |
Sortie possible :
1 2 | Original : documents\cours.txt Absolu : C:\Users\dell\Python\documents\cours.txt |
4. Obtenir un chemin absolu avec Path.resolve()
La méthode Path.resolve() permet également d'obtenir un chemin absolu. Elle effectue en plus une résolution du chemin, notamment des éléments comme .. et, selon le système de fichiers, des liens symboliques rencontrés.
Le programme suivant transforme un chemin relatif contenant .. en un chemin absolu résolu.
1 2 3 4 5 6 | from pathlib import Path chemin = Path("documents/python/../cours.txt") chemin_absolu = chemin.resolve() print(chemin_absolu) |
Sortie possible sous Windows :
1 | C:\Users\dell\Python\documents\cours.txt |
La partie python/.. signifie que nous entrons dans le dossier python puis revenons à son dossier parent. La méthode resolve() simplifie donc ce chemin.
Nous pouvons utiliser strict=True lorsque nous souhaitons exiger que le chemin puisse être résolu vers un élément existant. Dans ce cas, une exception est déclenchée si le chemin n'existe pas.
1 2 3 4 5 6 7 8 | from pathlib import Path chemin = Path("documents/cours.txt") try: print(chemin.resolve(strict=True)) except FileNotFoundError: print("Le chemin n'existe pas.") |
Sortie possible :
1 | C:\Users\dell\Python\documents\cours.txt |
5. Différence entre absolute() et resolve()
Les méthodes absolute() et resolve() permettent toutes les deux d'obtenir un chemin absolu, mais leur objectif n'est pas exactement le même.
- absolute() rend le chemin absolu sans effectuer la même résolution canonique que resolve().
- resolve() rend le chemin absolu et résout notamment les éléments .. ainsi que les liens symboliques lorsque cela s'applique.
- resolve(strict=True) exige que le chemin puisse être résolu vers un élément existant.
Le programme suivant montre la différence avec un chemin contenant ...
1 2 3 4 5 6 | from pathlib import Path chemin = Path("documents/python/../cours.txt") print("absolute() :", chemin.absolute()) print("resolve() :", chemin.resolve()) |
Sortie possible sous Windows :
1 2 | absolute() : C:\Users\dell\Python\documents\python\..\cours.txt resolve() : C:\Users\dell\Python\documents\cours.txt |
Pour obtenir un chemin absolu résolu destiné à être utilisé dans un programme, resolve() est donc souvent la méthode la plus pratique.
6. Obtenir le chemin absolu du répertoire courant
La méthode Path.cwd() retourne directement le répertoire de travail courant sous la forme d'un chemin absolu.
Le programme suivant affiche le dossier depuis lequel Python exécute actuellement le programme.
1 2 3 4 | from pathlib import Path dossier = Path.cwd() print(dossier) |
Sortie possible sous Windows :
1 | C:\Users\dell\Python |
Nous pouvons ensuite utiliser l'opérateur / pour construire un chemin absolu à partir du répertoire courant.
1 2 3 4 5 6 | from pathlib import Path dossier = Path.cwd() fichier = dossier / "documents" / "cours.txt" print(fichier) |
Sortie possible :
1 | C:\Users\dell\Python\documents\cours.txt |
7. Obtenir le chemin absolu d'un fichier
Pour obtenir le chemin absolu d'un fichier à partir d'un chemin relatif, nous pouvons simplement appliquer resolve() à l'objet Path.
Le programme suivant affiche le chemin absolu du fichier cours.txt situé dans le dossier documents.
1 2 3 4 | from pathlib import Path fichier = Path("documents/cours.txt") print(fichier.resolve()) |
Sortie possible :
1 | C:\Users\dell\Python\documents\cours.txt |
Si nous voulons vérifier l'existence du fichier avant d'utiliser son chemin absolu, nous pouvons combiner is_file() et resolve().
1 2 3 4 5 6 7 8 | from pathlib import Path fichier = Path("documents/cours.txt") if fichier.is_file(): print("Chemin absolu :", fichier.resolve()) else: print("Le fichier n'existe pas.") |
Sortie possible :
1 | Chemin absolu : C:\Users\dell\Python\documents\cours.txt |
8. Tester si un chemin est absolu avec is_absolute()
La méthode Path.is_absolute() permet de savoir si un chemin est déjà absolu. Elle retourne True pour un chemin absolu et False pour un chemin relatif.
Le programme suivant teste un chemin relatif.
1 2 3 4 5 | from pathlib import Path chemin = Path("documents/cours.txt") print(chemin.is_absolute()) |
Sortie :
1 | False |
Nous pouvons également convertir automatiquement le chemin lorsqu'il n'est pas absolu.
1 2 3 4 5 6 7 8 | from pathlib import Path chemin = Path("documents/cours.txt") if not chemin.is_absolute(): chemin = chemin.resolve() print(chemin) |
Sortie possible :
1 | C:\Users\dell\Python\documents\cours.txt |
9. Construire et manipuler des chemins absolus
Une fois un chemin absolu obtenu, toutes les propriétés de Path restent disponibles. Nous pouvons récupérer son nom, son dossier parent, son extension ou ses différentes parties.
Le programme suivant obtient le chemin absolu d'un fichier puis affiche plusieurs informations.
1 2 3 4 5 6 7 8 9 | from pathlib import Path fichier = Path("documents/cours.pdf").resolve() print("Chemin :", fichier) print("Nom :", fichier.name) print("Parent :", fichier.parent) print("Extension :", fichier.suffix) print("Est absolu :", fichier.is_absolute()) |
Sortie possible sous Windows :
1 2 3 4 5 | Chemin : C:\Users\dell\Python\documents\cours.pdf Nom : cours.pdf Parent : C:\Users\dell\Python\documents Extension : .pdf Est absolu : True |
Nous pouvons également construire un nouveau chemin à partir du dossier parent du fichier.
1 2 3 4 5 6 | from pathlib import Path fichier = Path("documents/cours.pdf").resolve() nouveau = fichier.parent / "exercices.pdf" print(nouveau) |
Sortie possible :
1 | C:\Users\dell\Python\documents\exercices.pdf |
10. À retenir
Le module pathlib permet d'obtenir et de manipuler facilement les chemins absolus en Python grâce aux méthodes de la classe Path.
- Un chemin relatif dépend du répertoire de travail courant.
- Un chemin absolu indique un emplacement complet dans le système de fichiers.
- absolute() permet de rendre un chemin absolu.
- resolve() permet d'obtenir un chemin absolu résolu.
- resolve() simplifie notamment les éléments comme ...
- resolve(strict=True) exige que le chemin puisse être résolu vers un élément existant.
- Path.cwd() retourne le répertoire de travail courant sous forme de chemin absolu.
- is_absolute() permet de vérifier si un chemin est absolu.
- is_file() peut être utilisé avant de récupérer le chemin absolu d'un fichier existant.
- L'opérateur / permet de construire facilement de nouveaux chemins à partir d'un chemin absolu.
Le programme suivant résume les principales opérations permettant de transformer un chemin relatif en chemin absolu.
1 2 3 4 5 6 7 8 9 10 11 | from pathlib import Path chemin = Path("documents/cours.txt") print("Chemin relatif :", chemin) print("Est absolu :", chemin.is_absolute()) chemin = chemin.resolve() print("Chemin absolu :", chemin) print("Est absolu :", chemin.is_absolute()) |
Sortie possible :
1 2 3 4 | Chemin relatif : documents\cours.txt Est absolu : False Chemin absolu : C:\Users\dell\Python\documents\cours.txt Est absolu : True |
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/


