- À propos du test d'existence et du type d'un chemin avec pathlib
- Créer un chemin avec Path
- Tester l'existence d'un chemin avec exists()
- Tester si un chemin est un fichier avec is_file()
- Tester si un chemin est un dossier avec is_dir()
- Distinguer un fichier d'un dossier
- Tester plusieurs chemins
- Tester l'existence avant de créer un fichier
- Tester l'existence avant de supprimer un fichier
- Tester un lien symbolique avec is_symlink()
- Combiner les méthodes de test de pathlib
- A retenir !
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.
1 2 3 4 | from pathlib import Path chemin = Path("documents/cours.txt") print(chemin) |
Sortie :
1 | documents/cours.txt |
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.
1 2 3 4 5 6 7 | from pathlib import Path fichier = Path("documents/cours.txt") dossier = Path("documents") print(fichier) print(dossier) |
Sortie :
1 2 | documents/cours.txt documents |
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.
1 2 3 4 | from pathlib import Path chemin = Path("cours.txt") print(chemin.exists()) |
Sortie possible si le fichier existe :
1 | True |
La méthode exists() est généralement utilisée dans une condition afin d'adapter le comportement du programme.
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. |
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.
1 2 3 4 | from pathlib import Path chemin = Path("documents/cours.txt") print(chemin.is_file()) |
Sortie :
1 | True |
Nous pouvons utiliser is_file() dans une condition pour exécuter une instruction uniquement lorsque le chemin représente un fichier.
1 2 3 4 5 6 7 8 | from pathlib import Path chemin = Path("documents/cours.txt") if chemin.is_file(): print("Le chemin représente un fichier.") else: print("Le chemin ne représente pas un fichier.") |
Sortie :
1 | Le chemin représente un fichier. |
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.
1 2 3 4 | from pathlib import Path chemin = Path("documents") print(chemin.is_dir()) |
Sortie :
1 | True |
La méthode is_dir() peut naturellement être utilisée dans une structure conditionnelle.
1 2 3 4 5 6 7 8 | from pathlib import Path chemin = Path("documents") if chemin.is_dir(): print("Le chemin représente un dossier.") else: print("Le chemin ne représente pas un dossier.") |
Sortie :
1 | Le chemin représente un dossier. |
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.
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 ou correspond à un autre type.") |
Sortie possible :
1 | C'est un dossier. |
Lorsque nous voulons distinguer explicitement un chemin inexistant des autres types de fichiers du système, nous pouvons commencer par utiliser exists().
1 2 3 4 5 6 7 8 9 10 11 12 | from pathlib import Path chemin = Path("documents") if not chemin.exists(): print("Le chemin n'existe pas.") elif chemin.is_file(): print("C'est un fichier.") elif chemin.is_dir(): print("C'est un dossier.") else: print("Le chemin existe mais ce n'est ni un fichier ordinaire ni un dossier.") |
Sortie possible :
1 | C'est un dossier. |
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | from pathlib import Path chemins = [ Path("documents"), Path("cours.txt"), Path("inconnu.txt") ] for chemin in chemins: if chemin.is_file(): print(chemin, ": fichier") elif chemin.is_dir(): print(chemin, ": dossier") else: print(chemin, ": chemin inexistant ou autre type") |
Sortie possible :
1 2 3 | documents : dossier cours.txt : fichier inconnu.txt : chemin inexistant ou autre type |
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.
1 2 3 4 5 6 7 8 9 | from pathlib import Path fichier = Path("cours.txt") if fichier.exists(): print("Le fichier existe déjà.") else: fichier.write_text("Cours Python", encoding="utf-8") print("Le fichier a été créé.") |
Sortie possible si le fichier n'existait pas :
1 | Le fichier a été créé. |
Lors d'une deuxième exécution, le fichier existe déjà et le programme ne remplace pas son contenu.
1 2 3 4 5 6 7 8 | from pathlib import Path fichier = Path("cours.txt") if fichier.exists(): print("Création annulée : cours.txt existe déjà.") else: fichier.write_text("Cours Python", encoding="utf-8") |
Sortie si le fichier existe :
1 | Création annulée : cours.txt existe déjà. |
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.
1 2 3 4 5 6 7 8 9 | from pathlib import Path fichier = Path("cours.txt") if fichier.is_file(): fichier.unlink() print("Le fichier a été supprimé.") else: print("Le fichier n'existe pas.") |
Sortie possible :
1 | Le fichier a été supprimé. |
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.
1 2 3 4 5 6 7 8 | from pathlib import Path chemin = Path("mon_lien") if chemin.is_symlink(): print("Le chemin est un lien symbolique.") else: print("Le chemin n'est pas un lien symbolique.") |
Sortie possible :
1 | Le chemin est un lien symbolique. |
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é.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | from pathlib import Path def analyser(chemin): chemin = Path(chemin) if chemin.is_symlink(): print("Lien symbolique :", chemin) elif chemin.is_file(): print("Fichier :", chemin) elif chemin.is_dir(): print("Dossier :", chemin) elif not chemin.exists(): print("Chemin inexistant :", chemin) else: print("Autre type de chemin :", chemin) analyser("documents") |
Sortie possible :
1 | Dossier : documents |
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.
1 2 3 4 5 6 7 | from pathlib import Path chemin = Path("documents/cours.txt") print("Existe :", chemin.exists()) print("Fichier :", chemin.is_file()) print("Dossier :", chemin.is_dir()) |
Sortie possible si cours.txt existe :
1 2 3 | Existe : True Fichier : True Dossier : False |
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/


