Je travaille sur un certain programme où je dois faire différentes choses en fonction de l'extension du fichier. Pourrais-je simplement utiliser ceci ?
if m == *.mp3
...
elif m == *.flac
...
Je travaille sur un certain programme où je dois faire différentes choses en fonction de l'extension du fichier. Pourrais-je simplement utiliser ceci ?
if m == *.mp3
...
elif m == *.flac
...
@volcano pourquoi ne pas utiliser .split('.')[-1]
? Ou la rpartition est-elle vraiment très efficace ?
os.path
fournit de nombreuses fonctions pour manipuler les chemins/noms de fichiers. ( docs )
os.path.splitext
prend un chemin et sépare l'extension de fichier de sa fin.
import os
filepaths = ["/folder/soundfile.mp3", "folder1/folder/soundfile.flac"]
for fp in filepaths:
# Split the extension from the path and normalise it to lowercase.
ext = os.path.splitext(fp)[-1].lower()
# Now we can simply use == to check for equality, no need for wildcards.
if ext == ".mp3":
print fp, "is an mp3!"
elif ext == ".flac":
print fp, "is a flac file!"
else:
print fp, "is an unknown file format."
Donne :
/folder/soundfile.mp3 is an mp3!
folder1/folder/soundfile.flac is a flac file!
Cette méthode ne tient pas compte des points de suspension. /.mp3
n'est pas considéré comme un fichier mp3. C'est cependant la façon dont un espace avant doit être traité. Par exemple .gitignore
n'est pas un format de fichier
Cela ne tient pas compte des noms de dossiers comportant des points. ( C:/folder.jpg/file.mp3
est un chemin valide).
@Stevoisiak que voulez-vous dire ? En quoi cela n'a-t-il pas été pris en compte ? Je viens d'essayer et .suffix
rend correctement '.mp3'
S'il existe un dossier nommé folder.mp3
le code ci-dessus pensera que le dossier est un fichier mp3.
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.
0 votes
Utiliser le module python re (regex) pour la mise en correspondance