Tester l'existence et le type d'un chemin avec pathlib en Python

1. À propos du test d'existence et du type d'un chemin avec pathlib

Le module pathlib fournit une approche orientée objet permettant de manipuler les fichiers, les dossiers et leurs chemins en Python. La classe Path propose notamment plusieurs méthodes permettant de vérifier l'existence et la nature d'un chemin.

Les principales méthodes utilisées sont exists(), is_file(), is_dir() et is_symlink().

Le programme suivant importe la classe Path du module pathlib et crée un objet représentant un chemin.

Sortie :

2. Créer un chemin avec Path

Avant de tester un chemin avec pathlib, nous devons généralement créer un objet Path. Le chemin fourni peut représenter un fichier, un dossier ou même un élément qui n'existe pas encore.

Le programme suivant crée deux objets Path, le premier représentant un fichier et le second un dossier.

Sortie :

La création d'un objet Path ne crée pas réellement le fichier ou le dossier sur le disque. Elle crée uniquement un objet Python représentant ce chemin.

3. Tester l'existence d'un chemin avec exists()

La méthode exists() permet de vérifier si un chemin existe dans le système de fichiers. Elle retourne la valeur booléenne True lorsque le chemin existe et False dans le cas contraire.

Le programme suivant vérifie si le fichier cours.txt existe dans le dossier courant.

Sortie possible si le fichier existe :

La méthode exists() est généralement utilisée dans une condition afin d'adapter le comportement du programme.

Sortie possible :

4. Tester si un chemin est un fichier avec is_file()

La méthode is_file() permet de vérifier si un chemin existant correspond à un fichier ordinaire. Elle retourne True si le chemin désigne un fichier et False dans le cas contraire.

Supposons que documents/cours.txt existe et soit un fichier. Le programme suivant permet de vérifier sa nature.

Sortie :

Nous pouvons utiliser is_file() dans une condition pour exécuter une instruction uniquement lorsque le chemin représente un fichier.

Sortie :

Si le chemin n'existe pas, is_file() retourne également False.

5. Tester si un chemin est un dossier avec is_dir()

La méthode is_dir() permet de déterminer si un chemin correspond à un dossier. Elle retourne True lorsque le chemin désigne un dossier et False dans le cas contraire.

Supposons que le dossier documents existe. Le programme suivant vérifie sa nature.

Sortie :

La méthode is_dir() peut naturellement être utilisée dans une structure conditionnelle.

Sortie :

6. Distinguer un fichier d'un dossier

Les méthodes is_file() et is_dir() peuvent être combinées afin de déterminer automatiquement si un chemin représente un fichier, un dossier ou un autre type de chemin.

Le programme suivant effectue cette distinction à l'aide d'une structure if...elif...else.

Sortie possible :

Lorsque nous voulons distinguer explicitement un chemin inexistant des autres types de fichiers du système, nous pouvons commencer par utiliser exists().

Sortie possible :

7. Tester plusieurs chemins

Lorsque plusieurs chemins doivent être vérifiés, nous pouvons stocker les objets Path dans une liste puis les parcourir avec une boucle for.

Dans l'exemple suivant, le programme indique pour chaque chemin s'il représente un fichier, un dossier ou un élément inexistant.

Sortie possible :

8. Tester l'existence avant de créer un fichier

La méthode exists() peut être utilisée avant la création d'un fichier afin d'éviter d'écraser involontairement un fichier déjà présent. La méthode write_text() de Path permet d'écrire directement du texte dans un fichier.

Le programme suivant crée cours.txt uniquement lorsque le chemin n'existe pas.

Sortie possible si le fichier n'existait pas :

Lors d'une deuxième exécution, le fichier existe déjà et le programme ne remplace pas son contenu.

Sortie si le fichier existe :

9. Tester l'existence avant de supprimer un fichier

Avant de supprimer un fichier, il est préférable de vérifier que le chemin représente réellement un fichier. La méthode is_file() peut être associée à unlink(), qui permet de supprimer un fichier ou un lien.

Le programme suivant supprime cours.txt uniquement s'il correspond à un fichier.

Sortie possible :

Cette vérification évite notamment d'essayer d'utiliser unlink() sur un chemin inexistant dans ce cas simple.

10. Tester un lien symbolique avec is_symlink()

Un lien symbolique est un élément du système de fichiers qui fait référence à un autre fichier ou dossier. La méthode is_symlink() permet de vérifier si un objet Path représente un lien symbolique.

Le programme suivant vérifie si mon_lien est un lien symbolique.

Sortie possible :

Un lien symbolique peut pointer vers un fichier ou vers un dossier. Ainsi, selon sa cible et son état, d'autres méthodes comme is_file() ou is_dir() peuvent également fournir des informations complémentaires.

11. Combiner les méthodes de test de pathlib

Dans un programme réel, nous pouvons combiner exists(), is_file(), is_dir() et is_symlink() afin d'obtenir plusieurs informations sur un chemin.

Le programme suivant définit une fonction analyser() qui affiche le type d'un chemin donné.

Sortie possible :

Cette approche peut être utilisée pour analyser automatiquement une liste de chemins avant d'effectuer des opérations sur les fichiers ou les dossiers.

12. A retenir !

La classe Path du module pathlib permet de vérifier facilement l'existence et le type des éléments du système de fichiers.

  • exists() indique si un chemin existe.
  • is_file() indique si le chemin correspond à un fichier ordinaire.
  • is_dir() indique si le chemin correspond à un dossier.
  • is_symlink() indique si le chemin représente un lien symbolique.
  • exists() retourne True ou False.
  • is_file() retourne également False lorsque le chemin n'est pas un fichier ou n'existe pas.
  • is_dir() retourne également False lorsque le chemin n'est pas un dossier ou n'existe pas.
  • Ces méthodes peuvent être combinées dans des structures conditionnelles.
  • Il est utile de tester un chemin avant certaines opérations de création, de lecture, de modification ou de suppression.

Le programme suivant résume les trois tests les plus couramment utilisés avec Path.

Sortie possible si cours.txt existe :

 


 


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 *