¿Cómo puedo comprobar la extensión de un archivo?
Estoy trabajando en un determinado programa en el que necesito hacer diferentes cosas según la extensión del archivo. ¿Podría usar esto?
if m == *.mp3
...
elif m == *.flac
...
Aceptado
Suponiendo que m
es una cadena, puedes usar endswith
:
if m.endswith('.mp3'):
...
elif m.endswith('.flac'):
...
Para no distinguir entre mayúsculas y minúsculas y eliminar una cadena else-if potencialmente grande:
m.lower().endswith(('.png', '.jpg', '.jpeg'))
os.path
proporciona muchas funciones para manipular rutas/nombres de archivos. ( documentos )
os.path.splitext
toma una ruta y divide la extensión del archivo desde el final.
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."
Da:
/folder/soundfile.mp3 es un mp3! carpeta1/carpeta/soundfile.flac es un archivo flac!
Utilice pathlib
desde Python3.4 en adelante.
from pathlib import Path
Path('my_file.mp3').suffix == '.mp3'
Si está trabajando con carpetas que contienen puntos, puede realizar una verificación adicional usando
Path('your_folder.mp3').is_file() and Path('your_folder.mp3').suffix == '.mp3'
para garantizar que una carpeta con un .mp3
sufijo no se interprete como un archivo mp3.