Existe-t-il une fonction permettant d'extraire l'extension d'un nom de fichier ?
L'utilisation de basename
est un peu confus ici puisque os.path.basename("/path/to/somefile.ext")
rendrait "somefile.ext"
Existe-t-il une fonction permettant d'extraire l'extension d'un nom de fichier ?
Oui. Utilisez os.path.splitext
(voir Documentation Python 2.X o Documentation Python 3.X ):
>>> import os
>>> filename, file_extension = os.path.splitext('/path/to/somefile.ext')
>>> filename
'/path/to/somefile'
>>> file_extension
'.ext'
Contrairement à la plupart des tentatives de séparation manuelle des chaînes de caractères, os.path.splitext
traitera correctement /a/b.c/d
comme n'ayant pas d'extension au lieu d'avoir une extension .c/d
et il traitera .bashrc
comme n'ayant pas d'extension au lieu d'avoir une extension .bashrc
:
>>> os.path.splitext('/a/b.c/d')
('/a/b.c/d', '')
>>> os.path.splitext('.bashrc')
('.bashrc', '')
L'utilisation de basename
est un peu confus ici puisque os.path.basename("/path/to/somefile.ext")
rendrait "somefile.ext"
@kiswa - Je suppose que vous pourriez le faire de cette façon. J'ai vu plus de code utilisant import os.path
cependant.
Oh, je me demandais juste s'il y avait une raison spécifique derrière cela (autre que la convention). Je suis encore en train d'apprendre Python et je voulais en savoir plus !
Pour les cas d'utilisation simples, une option peut être de se séparer de dot :
>>> filename = "example.jpeg"
>>> filename.split(".")[-1]
'jpeg'
Pas d'erreur lorsque le fichier n'a pas d'extension :
>>> "filename".split(".")[-1]
'filename'
Mais vous devez faire attention :
>>> "png".split(".")[-1]
'png' # But file doesn't have an extension
Il ne fonctionne pas non plus avec les fichiers cachés des systèmes Unix :
>>> ".bashrc".split(".")[-1]
'bashrc' # But this is not an extension
Pour un usage général, préférez os.path.splitext
Pas vraiment. L'extension d'un fichier nommé "x.tar.gz" est "gz" et non "tar.gz". os.path.splitext donne également ".os" comme extension.
Cela fonctionne lorsque vous traitez des fichiers pour des plateformes autres que celle que vous exécutez.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.