Créer et manipuler des chemins avec os.path en Python

Le module os.path de Python fournit plusieurs fonctions permettant de construire, analyser, tester et transformer les chemins des fichiers et des dossiers. Il permet notamment de manipuler les chemins sans avoir à gérer manuellement les séparateurs utilisés par les différents systèmes d'exploitation.

1. À propos de os.path en Python

os.path est un sous-module du module standard os. Il regroupe plusieurs fonctions permettant de travailler facilement avec les chemins des fichiers et des dossiers.

Pour utiliser les fonctions de os.path, il suffit d'importer le module os. L'exemple suivant stocke un chemin dans une variable puis l'affiche.

Sortie :

Le module os.path est particulièrement utile pour écrire des programmes capables de fonctionner sur différents systèmes d'exploitation comme Windows, Linux et macOS.

2. Construire un chemin avec os.path.join()

La fonction os.path.join() permet d'assembler plusieurs parties afin de construire un chemin. Elle utilise automatiquement le séparateur approprié au système d'exploitation.

Dans l'exemple suivant, nous construisons un chemin à partir du dossier documents, du sous-dossier python et du fichier cours.txt.

Sortie sous Windows :

Sortie sous Linux ou macOS :

L'utilisation de os.path.join() est préférable à la concaténation manuelle des différentes parties d'un chemin avec / ou \.

3. Obtenir le nom d'un fichier avec os.path.basename()

La fonction os.path.basename() permet de récupérer la dernière partie d'un chemin. Lorsqu'un chemin désigne un fichier, cette fonction permet généralement d'obtenir son nom avec son extension.

Dans l'exemple suivant, nous récupérons le nom cours.pdf à partir du chemin complet du fichier.

Sortie :

La fonction os.path.basename() est utile lorsqu'un programme dispose d'un chemin complet mais doit uniquement récupérer le nom du fichier.

4. Obtenir le dossier avec os.path.dirname()

La fonction os.path.dirname() permet de récupérer la partie d'un chemin correspondant au dossier contenant le fichier.

Dans l'exemple suivant, nous récupérons le dossier contenant le fichier cours.pdf.

Sortie :

Cette fonction est particulièrement utile lorsqu'on souhaite retrouver le répertoire parent d'un fichier à partir de son chemin.

5. Séparer un chemin avec os.path.split()

La fonction os.path.split() permet de séparer un chemin en deux parties : le dossier et le dernier élément du chemin. Elle renvoie ces deux informations sous la forme d'un tuple.

Dans l'exemple suivant, nous séparons le dossier du nom du fichier.

Sortie :

La fonction os.path.split() permet donc d'obtenir en une seule opération le dossier et le nom du fichier.

6. Séparer le nom et l'extension avec os.path.splitext()

La fonction os.path.splitext() permet de séparer un nom de fichier en deux parties : le nom et son extension.

Dans l'exemple suivant, nous séparons le nom cours_python de l'extension .pdf.

Sortie :

La fonction os.path.splitext() est particulièrement utile pour identifier l'extension d'un fichier ou pour construire un nouveau nom de fichier.

Dans l'exemple suivant, nous remplaçons l'extension .txt par l'extension .pdf.

Sortie :

7. Tester l'existence d'un chemin avec os.path.exists()

La fonction os.path.exists() permet de vérifier si un fichier ou un dossier existe réellement sur le système. Elle renvoie True si le chemin existe et False dans le cas contraire.

Dans l'exemple suivant, nous testons l'existence du dossier courant représenté par le symbole ..

Sortie :

La fonction os.path.exists() est souvent utilisée avec une structure conditionnelle if afin de vérifier l'existence d'un chemin avant d'effectuer une opération.

Sortie :

8. Distinguer fichiers et dossiers

Utiliser os.path.isfile()

La fonction os.path.isfile() permet de déterminer si un chemin correspond à un fichier. Elle renvoie True lorsque le chemin désigne un fichier et False dans le cas contraire.

Dans l'exemple suivant, nous créons d'abord le fichier exemple.txt, puis nous vérifions qu'il s'agit bien d'un fichier.

Sortie :

Utiliser os.path.isdir()

La fonction os.path.isdir() permet de déterminer si un chemin correspond à un dossier. Dans l'exemple suivant, le symbole . représente le dossier courant.

Sortie :

Distinguer automatiquement un fichier d'un dossier

Les fonctions os.path.exists(), os.path.isfile() et os.path.isdir() peuvent être combinées pour déterminer automatiquement la nature d'un chemin.

Sortie :

9. Obtenir et normaliser un chemin absolu

Obtenir un chemin absolu avec os.path.abspath()

Un chemin relatif est défini par rapport au répertoire courant, tandis qu'un chemin absolu indique l'emplacement complet d'un fichier ou d'un dossier. La fonction os.path.abspath() permet de transformer un chemin relatif en chemin absolu.

Dans l'exemple suivant, nous obtenons le chemin absolu correspondant au fichier cours.txt. Le résultat dépend du dossier depuis lequel le programme est exécuté.

Exemple de sortie sous Windows :

Exemple de sortie sous Linux :

Normaliser un chemin avec os.path.normpath()

La fonction os.path.normpath() permet de normaliser un chemin. Elle simplifie notamment certains éléments comme .., qui représente le dossier parent.

Dans l'exemple suivant, la partie python/.. est simplifiée lors de la normalisation du chemin.

Sortie sous Windows :

Sortie sous Linux ou macOS :

Exemple complet de manipulation d'un chemin

L'exemple suivant regroupe plusieurs fonctions importantes de os.path. Nous construisons un chemin, puis nous récupérons son dossier, le nom du fichier, son nom sans extension et son extension.

Sortie sous Windows :

Les fonctions du module os.path permettent ainsi de manipuler efficacement les chemins sans effectuer manuellement des opérations complexes sur les chaînes de caractères.

Principales fonctions à retenir : os.path.join(), os.path.basename(), os.path.dirname(), os.path.split(), os.path.splitext(), os.path.exists(), os.path.isfile(), os.path.isdir(), os.path.abspath() et os.path.normpath().

 


 


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 *