
Vérifier l'existence d'un fichier ou d'un répertoire
Apprenez à vérifier si un fichier ou un répertoire existe en Python avant de le manipuler. Utilisez 'os.path.exists', 'os.path.isfile', 'os.path.isdir', et gérez les exceptions potentielles.
Pourquoi vérifier l'existence ? Eviter les erreurs
Avant d'effectuer des opérations sur un fichier ou un répertoire (lecture, écriture, suppression, renommage, etc.), il est souvent prudent de vérifier s'il existe.
Si vous essayez d'ouvrir un fichier qui n'existe pas en lecture, Python lèvera une exception `FileNotFoundError`.
Si vous essayez de créer un répertoire qui existe déjà (sans utiliser `exist_ok=True` avec `os.makedirs`), Python lèvera une exception `FileExistsError`.
Si vous essayez de supprimer, renommer, ou effectuer d'autres opérations sur un fichier ou un répertoire qui n'existe pas, des exceptions seront levées.
Vérifier l'existence permet d'éviter ces erreurs et de rendre votre code plus robuste.
os.path.exists() : vérifier l'existence (fichier ou répertoire)
La fonction `os.path.exists()` du module `os.path` permet de vérifier si un chemin d'accès (fichier ou répertoire) existe.
Syntaxe :
import os
existe = os.path.exists(chemin)- `chemin` : Le chemin d'accès (relatif ou absolu) au fichier ou au répertoire.
- `os.path.exists(chemin)` retourne `True` si le chemin existe (que ce soit un fichier, un répertoire, un lien symbolique, etc.), et `False` sinon.
Exemple :
import os
if os.path.exists("mon_fichier.txt"):
print("Le fichier/répertoire existe.")
# ... Faire quelque chose avec le fichier/répertoire ...
else:
print("Le fichier/répertoire n'existe pas.")
# ... Gérer l'absence du fichier/répertoire ...`os.path.exists()` est la fonction la plus générale pour vérifier l'existence d'un chemin, quel que soit son type.
os.path.isfile() : vérifier si c'est un fichier
La fonction `os.path.isfile()` permet de vérifier si un chemin d'accès correspond à un *fichier* existant (pas un répertoire, ni un lien symbolique, etc.).
Syntaxe :
import os
est_fichier = os.path.isfile(chemin)- `chemin` : Le chemin d'accès.
- `os.path.isfile(chemin)` retourne `True` si le chemin existe et correspond à un fichier régulier, `False` sinon.
Exemple :
import os
if os.path.isfile("mon_fichier.txt"):
print("C'est un fichier.")
# ... Traiter le fichier ...
else:
print("Ce n'est pas un fichier (ou il n'existe pas).")os.path.isdir() : vérifier si c'est un répertoire
La fonction `os.path.isdir()` permet de vérifier si un chemin d'accès correspond à un *répertoire* existant.
Syntaxe :
import os
est_repertoire = os.path.isdir(chemin)- `chemin` : Le chemin d'accès.
- `os.path.isdir(chemin)` retourne `True` si le chemin existe et correspond à un répertoire, `False` sinon.
Exemple :
import os
if os.path.isdir("mon_repertoire"):
print("C'est un répertoire.")
# ... Traiter le répertoire ...
else:
print("Ce n'est pas un répertoire (ou il n'existe pas).")Gérer les exceptions : une alternative (parfois)
Au lieu de vérifier explicitement l'existence d'un fichier ou d'un répertoire avant de l'utiliser, vous pouvez parfois utiliser une approche basée sur la gestion des exceptions : "Il est plus facile de demander pardon que la permission" (Easier to Ask for Forgiveness than Permission, EAFP).
Cela signifie que vous essayez d'effectuer l'opération directement (par exemple, ouvrir le fichier), et vous capturez l'exception (`FileNotFoundError`, par exemple) si elle se produit.
Exemple :
try:
with open("mon_fichier.txt", "r", encoding="utf-8") as f:
contenu = f.read()
print(contenu)
except FileNotFoundError:
print("Le fichier n'existe pas.")Dans cet exemple, on essaie directement d'ouvrir le fichier. Si le fichier n'existe pas, `FileNotFoundError` est levée et gérée dans le bloc `except`.
Cette approche peut être plus concise et plus efficace que de vérifier l'existence au préalable, *si l'absence du fichier est une situation exceptionnelle*.
Cependant, si l'absence du fichier est une situation *normale et fréquente*, il peut être préférable de vérifier l'existence avec `os.path.exists()` pour éviter le coût de la levée et de la capture de l'exception.
Bonnes pratiques
Voici quelques bonnes pratiques :
- Utilisez `os.path.exists()`, `os.path.isfile()`, ou `os.path.isdir()` pour vérifier l'existence d'un fichier ou d'un répertoire avant de l'utiliser, si l'absence du fichier/répertoire est une situation courante.
- Utilisez des blocs `try...except` pour gérer les erreurs potentielles (`FileNotFoundError`, `PermissionError`, etc.) si l'absence du fichier/répertoire est une situation exceptionnelle.
- Choisissez la méthode la plus appropriée en fonction du contexte et de ce que vous voulez faire.
- Dans tous les cas, gérez les erreurs potentielles de manière appropriée (affichez un message d'erreur clair, réessayez l'opération, etc.).