HOWTO · Python

Obtenir l'extension de fichier en Python

Il montre comment obtenir l'extension de fichier en Python.

Sur cette page

Pour obtenir l’extension d’un nom de fichier en Python, utilisez os.path.splitext() pour récupérer le suffixe final, ou pathlib.Path.suffixes si vous avez besoin de plusieurs parties, par exemple .tar.bz2. Les exemples ci-dessous montrent la structure de chaque résultat afin que vous puissiez choisir celle qui convient à votre code.

Utilisez le module os.path pour extraire l’extension d’un fichier en Python

os.path fournit des fonctions utilitaires pour manipuler les chemins du système d’exploitation. Sa fonction splitext() renvoie un tuple de deux éléments : le chemin racine, puis l’extension finale. Affectez les éléments du tuple dans cet ordre, même si vous choisissez d’autres noms de variables.

Exécutez cet exemple avec un chemin se terminant par .docx :

Le code et les libellés ou sorties affichés dans cette section restent en anglais.

import os

path = "/Users/user/Documents/sampledoc.docx"
root, extension = os.path.splitext(path)

print("Root:", root)
print("Extension:", extension)
Root: /Users/user/Documents/sampledoc
Extension: .docx

La sortie affiche d’abord le chemin racine, puis l’extension. splitext() ne tient compte que du suffixe final : pour un nom comme backup.tar.gz, la fonction sépare .gz et laisse backup.tar dans la racine.

L’extension renvoyée par splitext() inclut le point initial, ce qui facilite les comparaisons telles que extension == ".csv". Si le nom de fichier n’a pas de suffixe, la partie correspondant à l’extension est une chaîne vide et la racine reste le nom du fichier. Un point initial seul ne compte pas comme suffixe : selon cette règle, un nom comme .profile n’a pas d’extension.

Utilisez le module pathlib pour extraire l’extension du fichier en Python

pathlib représente les chemins sous forme d’objets. Créez un objet Path à partir d’une chaîne de chemin, puis consultez ses attributs : parent correspond au chemin contenant le fichier, name au dernier composant du chemin et suffix au suffixe final, point initial compris.

Pour un fichier à suffixe unique comme sampledoc.docx, path.suffix vaut .docx. Les attributs sont des valeurs : consultez-les sans parenthèses. Cet exemple autonome montre aussi la différence entre suffix et suffixes :

Le code et les libellés ou sorties affichés dans cette section restent en anglais.

import pathlib

single = pathlib.Path("/Users/user/Documents/sampledoc.docx")
archive = pathlib.Path("/Users/user/Documents/app_sample.tar.bz2")

print("Parent:", single.parent)
print("Filename:", single.name)
print("Final suffix:", single.suffix)
print("Suffix parts:", single.suffixes)
print("Archive suffix:", "".join(archive.suffixes))
Parent: /Users/user/Documents
Filename: sampledoc.docx
Final suffix: .docx
Suffix parts: ['.docx']
Archive suffix: .tar.bz2

La sortie affiche le chemin contenant le fichier, le nom final, le suffixe final, la liste des suffixes et le suffixe d’archive obtenu par concaténation. suffixes est une liste : pour sampledoc.docx, elle contient un seul élément, .docx ; pour app_sample.tar.bz2, elle contient .tar et .bz2. Concaténer ces éléments avec une chaîne vide produit .tar.bz2. Cette approche est utile lorsque l’application traite un suffixe composé comme une seule valeur, mais de nombreux noms de fichiers n’ont qu’un seul suffixe.

Lorsqu’un chemin n’a pas de suffixe, Path.suffix est une chaîne vide et Path.suffixes une liste vide. Un point initial seul, comme dans .profile, n’est pas renvoyé comme suffixe. Conservez la liste si le code doit ensuite examiner chaque partie ; concaténez ses éléments uniquement si l’application attend une seule valeur composée. Ces attributs décrivent le dernier composant du nom dans le chemin, que celui-ci corresponde ou non à un fichier existant.

Choisissez os.path.splitext() si seul le suffixe final vous intéresse ou si vous avez également besoin de la racine renvoyée par la même opération. Choisissez Path.suffix pour obtenir un suffixe unique à partir d’un objet chemin, et Path.suffixes si vous avez besoin des différentes parties du suffixe, séparément ou concaténées en une valeur composée. Les deux approches examinent le nom ; aucune ne vérifie l’existence du fichier.