Créer et manipuler des chemins avec pathlib.Path en Python

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.

Sortie :

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.

Sortie :

Nous pouvons également fournir séparément plusieurs parties du chemin. Path se charge alors de les assembler correctement.

Sortie :

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

Sortie possible sous Windows :

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.

Sortie possible sous Windows :

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.

Sortie possible sous Windows :

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.

Sortie :

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.

Sortie :

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.

Sortie :

La propriété parts permet d'obtenir les différentes composantes du chemin sous forme d'un tuple.

Sortie possible :

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.

Sortie :

Pour un fichier possédant plusieurs suffixes, la propriété suffixes permet de récupérer l'ensemble des suffixes.

Sortie :

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.

Sortie possible :

Nous pouvons ensuite déterminer si le chemin représente un fichier ou un dossier.

Sortie possible :

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.

Sortie possible sous Windows :

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.

Sortie possible :

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.

Sortie possible :

Nous pouvons combiner iterdir() avec is_file() afin d'afficher uniquement les fichiers du dossier.

Sortie possible :

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.

Sortie :

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.

Sortie :

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.

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 *