
Travailler avec des chemins de fichiers (module os.path)
Apprenez à manipuler des chemins de fichiers de manière portable en Python avec le module os.path. Découvrez comment construire des chemins, vérifier l'existence d'un fichier ou répertoire, obtenir le nom de base, le répertoire parent, et plus encore.
Construire des chemins de manière portable : oubliez les `/` et `\`
Lorsque vous manipulez des chemins de fichiers, il est important de le faire de manière portable, c'est-à-dire de manière à ce que votre code fonctionne sur différents systèmes d'exploitation (Windows, macOS, Linux, etc.). Les différents systèmes d'exploitation utilisent des séparateurs de chemin différents (`/` sur macOS et Linux, `\` sur Windows).
Le module `os.path` fournit des fonctions pour manipuler les chemins de fichiers de manière portable. Au lieu de concaténer des chaînes de caractères avec des `/` ou des `\`, vous utilisez les fonctions de `os.path`.
La fonction la plus utile est `os.path.join()`. Elle prend en argument un ou plusieurs composants de chemin (noms de répertoires, nom de fichier), et les combine en un chemin complet, en utilisant le séparateur de chemin approprié pour le système d'exploitation courant.
Par exemple : `chemin = os.path.join('dossier', 'sous_dossier', 'fichier.txt')`. Sur Windows, `chemin` vaudra `'dossier\sous_dossier\fichier.txt'`. Sur macOS ou Linux, `chemin` vaudra `'dossier/sous_dossier/fichier.txt'`.
Utiliser `os.path.join()` garantit que votre code fonctionnera correctement sur tous les systèmes d'exploitation, sans que vous ayez à vous soucier des différences de séparateurs de chemin.
Nous verrons des exemples d'utilisation de `os.path.join()`.
Vérifier l'existence d'un fichier ou d'un répertoire : avant d'agir
Avant d'ouvrir un fichier, de le supprimer, ou d'effectuer toute autre opération, il est souvent utile de vérifier s'il existe.
Le module `os.path` fournit des fonctions pour cela :
- `os.path.exists(chemin)` : renvoie `True` si le chemin pointe vers un fichier ou un répertoire existant, `False` sinon.
- `os.path.isfile(chemin)`: renvoie `True` si le chemin pointe vers un fichier régulier, `False` sinon (même si le chemin existe mais pointe vers un répertoire, un lien symbolique, etc.).
- `os.path.isdir(chemin)` : renvoie `True` si le chemin pointe vers un répertoire, `False` sinon.
Vous pouvez utiliser ces fonctions pour éviter les erreurs (comme `FileNotFoundError`) et pour adapter le comportement de votre programme en fonction de l'existence ou du type d'un fichier ou d'un répertoire.
Nous verrons des exemples d'utilisation de ces fonctions.
Obtenir le nom de base, le répertoire parent, etc. : décomposez les chemins
Le module `os.path` fournit des fonctions pour décomposer un chemin de fichier en ses composants :
- `os.path.basename(chemin)` : renvoie le nom de base du chemin, c'est-à-dire le dernier composant (le nom du fichier ou du répertoire lui-même). Par exemple, `os.path.basename('/dossier/fichier.txt')` renvoie `'fichier.txt'`.
- `os.path.dirname(chemin)` : renvoie le nom du répertoire parent du chemin. Par exemple, `os.path.dirname('/dossier/fichier.txt')` renvoie `'/dossier'`.
- `os.path.split(chemin)`: décompose le chemin et renvoie un tuple de type (dirname, basename).
- `os.path.splitext(chemin)` : renvoie un tuple contenant le nom de base du chemin et son extension (le point et les caractères qui suivent le dernier point). Par exemple, `os.path.splitext('/dossier/fichier.txt')` renvoie `('/dossier/fichier', '.txt')`.
- `os.path.abspath(chemin)`: renvoie la version absolue du chemin.
- `os.path.relpath(chemin, start=os.curdir)`: renvoie un chemin relatif vers le chemin, à partir du répertoire `start`.
Ces fonctions peuvent être utiles pour extraire des informations d'un chemin de fichier, ou pour construire de nouveaux chemins à partir de composants existants.
Nous verrons des exemples d'utilisation de ces fonctions.