Obtenir un chemin absolu avec pathlib en Python

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.

Sortie :

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().

Sortie :

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.

Sortie sous Windows :

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.

Sortie possible sous Windows :

La méthode absolute() retourne un nouvel objet Path. L'objet d'origine n'est pas modifié.

Sortie possible :

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.

Sortie possible sous Windows :

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.

Sortie possible :

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 ...

Sortie possible sous Windows :

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.

Sortie possible sous Windows :

Nous pouvons ensuite utiliser l'opérateur / pour construire un chemin absolu à partir du répertoire courant.

Sortie possible :

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.

Sortie possible :

Si nous voulons vérifier l'existence du fichier avant d'utiliser son chemin absolu, nous pouvons combiner is_file() et resolve().

Sortie possible :

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.

Sortie :

Nous pouvons également convertir automatiquement le chemin lorsqu'il n'est pas absolu.

Sortie possible :

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.

Sortie possible sous Windows :

Nous pouvons également construire un nouveau chemin à partir du dossier parent du fichier.

Sortie possible :

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.

Sortie possible :

 


 


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/


Leave a Reply

Your email address will not be published. Required fields are marked *