Je travaille sur un certain programme où je dois faire différentes choses en fonction de l'extension du fichier. Puis-je simplement utiliser ceci?
if m == *.mp3
...
elif m == *.flac
...
python
file-extension
wkoomson
la source
la source
Réponses:
En supposant qu'il
m
s'agit d'une chaîne, vous pouvez utiliserendswith
:Pour être insensible à la casse et pour éliminer une chaîne else-if potentiellement importante:
la source
.split('.')[-1]
? Ou la répartition est-elle vraiment efficace?os.path
fournit de nombreuses fonctions pour manipuler les chemins / noms de fichiers. ( docs )os.path.splitext
prend un chemin et divise l'extension de fichier à partir de la fin.Donne:
la source
/.mp3
n'est donc pas considérée comme un fichier mp3. C'est cependant la manière dont un espace de premier plan doit être traité. Par exemple, ce.gitignore
n'est pas un format de fichierUtilisez à
pathlib
partir de Python3.4.la source
Regardez le module fnmatch. Cela fera ce que vous essayez de faire.
la source
un moyen simple pourrait être:
os.path.splitext(file)
renverra un tuple avec deux valeurs (le nom de fichier sans extension + juste l'extension). Le deuxième index ([1]) vous donnera donc juste l'extension. Ce qui est cool, c'est que de cette façon, vous pouvez également accéder au nom de fichier assez facilement, si nécessaire!la source
ou peut-être:
la source
Un vieux fil, mais qui peut aider les futurs lecteurs ...
J'éviter l' utilisation .lower () sur les noms de fichiers si pour aucune autre raison que de rendre votre code plus indépendant de la plate - forme. (Linux est sensible à la casse, .lower () sur un nom de fichier corrompra sûrement votre logique éventuellement ... ou pire, un fichier important!)
Pourquoi ne pas utiliser re ? (Bien que pour être encore plus robuste, vous devriez vérifier l'en-tête de fichier magique de chaque fichier ... Comment vérifier le type de fichiers sans extensions en python? )
Production:
la source
la source
la source
.
s, par exemplesome.test.file.mp3
la source
la source