¿Cómo puedo comprobar la extensión de un archivo?

Resuelto wkoomson asked hace 13 años • 14 respuestas

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
   ...
wkoomson avatar May 05 '11 21:05 wkoomson
Aceptado

Suponiendo que mes 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'))
lafras avatar May 05 '2011 14:05 lafras

os.pathproporciona muchas funciones para manipular rutas/nombres de archivos. ( documentos )

os.path.splitexttoma 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!
Acorn avatar May 05 '2011 15:05 Acorn

Utilice pathlibdesde 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 .mp3sufijo no se interprete como un archivo mp3.

Greg avatar Jun 11 '2018 05:06 Greg