HOWTO · Python
Comment obtenir le nom de fichier de Path en Python
Ce tutoriel présente différentes méthodes en Python pour extraire le nom de fichier d'un chemin de fichier, notamment os.path.split(), os.path.basename(), ntpath.basename() et pathlib.Path.name.
Sur cette page
En programmation, nous avons souvent besoin d’extraire le nom de fichier d’un chemin de fichier donné. Prenons un scénario où nous avons un chemin de fichier, tel que C:\Documents\Project\file.txt, et où nous devons extraire uniquement le nom de fichier, à savoir file.txt. C’est une tâche courante dans la gestion de fichiers, l’analyse de données et le développement web, et Python offre plusieurs façons de la réaliser.
Ce tutoriel présente quatre méthodes pour obtenir un nom de fichier à partir d’un chemin en Python : os.path.split(), os.path.basename(), ntpath.basename() et pathlib.Path.name. Elles diffèrent principalement par ce qu’elles fournissent en plus du nom de fichier, et par la manière dont elles traitent les chemins écrits pour un système d’exploitation différent de celui sur lequel votre code s’exécute.
Utilisez la fonction os.path.split() pour obtenir le nom de fichier à partir du chemin en Python
La fonction os.path.split() divise un chemin de fichier en ses composants répertoire et nom de fichier, de sorte que vous pouvez récupérer uniquement la partie nom de fichier — ou conserver les deux parties, si vous avez également besoin du répertoire.
Syntaxe :
import os
directory, filename = os.path.split(path)
Paramètres : La fonction os.path.split() accepte un seul paramètre.
path: Ce paramètre représente le chemin de fichier à partir duquel nous voulons extraire le nom de fichier. Il peut s’agir d’une chaîne contenant le chemin absolu ou relatif du fichier.
Valeurs de retour : La fonction renvoie un tuple contenant deux éléments.
-
directory: Cette variable contient le composant répertoire du chemin, sans le nom de fichier. -
filename: Cette variable contient le nom de fichier extrait du chemin.
Le fragment de code suivant montre comment nous pouvons obtenir un nom de fichier à partir d’un chemin en Python en utilisant la fonction os.path.split().
import os
directory, filename = os.path.split("MyFolder/MySubFolder/MyFile.txt")
print(directory)
print(filename)
Sortie :
MyFolder/MySubFolder
MyFile.txt
La variable directory contient MyFolder/MySubFolder, le composant répertoire du chemin de fichier, et la variable filename stocke MyFile.txt, le nom de fichier extrait. Utilisez cette méthode lorsque vous avez besoin des deux parties ; si vous n’avez besoin que du nom de fichier, la méthode suivante est plus courte.
Utilisez la fonction os.path.basename() pour obtenir le nom de fichier à partir du chemin en Python
La fonction os.path.basename() renvoie le dernier composant d’un chemin, qui est généralement le nom de fichier. Elle fait partie du module os.path, dont les règles de séparateur suivent le système d’exploitation sur lequel le code s’exécute.
Syntaxe :
import os
filename = os.path.basename(path)
Paramètres : La fonction os.path.basename() accepte un seul paramètre.
path: Ce paramètre représente le chemin de fichier à partir duquel nous voulons extraire le nom de fichier. Il peut s’agir d’une chaîne contenant le chemin absolu ou relatif du fichier.
Valeur de retour : La fonction renvoie une chaîne représentant le nom de fichier extrait du chemin donné.
Bien que os.path.basename() et os.path.split() puissent toutes deux extraire des noms de fichiers à partir de chemins, os.path.basename() se concentre uniquement sur le composant nom de fichier et le renvoie sous forme de chaîne, ce qui en fait le choix le plus simple lorsque vous n’avez pas besoin de la partie répertoire.
import os
filename = os.path.basename("MyFolder/MySubFolder/MyFile.txt")
print(filename)
Sortie :
MyFile.txt
Le résultat, le nom de fichier MyFile.txt, est affecté à la variable filename et affiché.
Utilisez la bibliothèque ntpath pour obtenir le nom de fichier à partir du chemin en Python
Le module ntpath de Python implémente la manipulation des chemins pour les chemins Windows, quel que soit le système sur lequel votre code s’exécute réellement. Cela compte lorsque vous devez traiter des chemins de style Windows sur une machine Linux ou macOS : là, os.path.basename() ne traite pas l’antislash comme un séparateur, donc os.path.basename("MyFolder\\MySubFolder\\MyFile.txt") renvoie la chaîne entière, tandis que ntpath.basename() renvoie le nom de fichier.
Syntaxe :
import ntpath
filename = ntpath.basename(path)
Paramètres : La fonction ntpath.basename() accepte un seul paramètre.
path: Ce paramètre représente le chemin de fichier à partir duquel nous voulons extraire le nom de fichier. Il peut s’agir d’une chaîne contenant le chemin absolu ou relatif du fichier.
Valeur de retour : La fonction renvoie une chaîne représentant le nom de fichier extrait du chemin donné.
Le fragment de code suivant montre comment nous pouvons obtenir un nom de fichier à partir d’un chemin Windows en Python en utilisant la fonction ntpath.basename().
import ntpath
filename = ntpath.basename("MyFolder\\MySubFolder\\MyFile.txt")
print(filename)
Sortie :
MyFile.txt
Utilisez ntpath lorsque les chemins que vous traitez sont des chemins Windows mais que votre code peut s’exécuter n’importe où ; sur une machine Windows, os.path suit déjà les mêmes règles, donc les deux s’y comportent de la même manière.
Utilisez le module pathlib pour obtenir le nom de fichier à partir du chemin en Python
Le module pathlib fournit une approche orientée objet pour travailler avec les chemins de fichiers. Sa classe Path encapsule les opérations liées aux chemins, et le nom de fichier est disponible directement via l’attribut .name d’un objet Path.
from pathlib import Path
filename = Path("MyFolder/MySubFolder/MyFile.txt").name
print(filename)
Sortie :
MyFile.txt
Au-delà de .name, le même objet vous donne le répertoire parent (.parent), l’extension (.suffix) et le nom de fichier sans l’extension (.stem), ce qui fait de pathlib le choix pratique lorsque vous avez besoin de plus que le nom de fichier seul.
Conclusion
Nous avons exploré 4 méthodes différentes en Python pour extraire le nom de fichier d’un chemin de fichier : os.path.split(), os.path.basename(), ntpath.basename() et pathlib.Path.name. Chaque méthode a des avantages et des inconvénients, ce qui les rend adaptées à différents scénarios.
La méthode os.path.split() peut diviser un chemin en ses composants répertoire et nom de fichier. Cette granularité permet un meilleur contrôle du chemin, mais nécessite du code supplémentaire pour accéder uniquement au nom de fichier. Cependant, elle fonctionne sur différents systèmes d’exploitation, ce qui la rend polyvalente.
D’autre part, os.path.basename() offre une approche plus simple en extrayant directement le nom de fichier du chemin. Elle est compatible avec diverses plateformes et offre une solution simple. Cependant, elle renvoie uniquement le nom de fichier sous forme de chaîne.
Pour les chemins spécifiques à Windows, ntpath.basename() est conçu pour traiter ces chemins sur n’importe quel système d’exploitation. Il extrait directement le nom de fichier sans code supplémentaire. Cependant, il est limité aux chemins Windows et n’est pas compatible multiplateforme.
Enfin, pathlib.Path.name fournit une approche orientée objet pour travailler avec les chemins. Elle permet d’autres manipulations de chemins et s’intègre bien avec les autres fonctionnalités de pathlib. Cependant, elle introduit une certaine complexité pour la simple extraction du nom de fichier et nécessite l’import du module pathlib.