Estoy trabajando en cierto programa donde necesito hacer cosas diferentes dependiendo de la extensión del archivo. ¿Podría usar esto?
if m == *.mp3
...
elif m == *.flac
...
python
file-extension
wkoomson
fuente
fuente
Respuestas:
Suponiendo que
m
es una cadena, puede usarendswith
:Para ser insensible a mayúsculas y minúsculas y para eliminar una cadena potencialmente grande si no:
fuente
.split('.')[-1]
? ¿O es la partición realmente alta eficiencia?os.path
proporciona muchas funciones para manipular rutas / nombres de archivo. ( documentos )os.path.splitext
toma una ruta y divide la extensión del archivo desde el final.Da:
fuente
/.mp3
lo que no se considera un archivo mp3. Sin embargo, esta es la forma en que se debe tratar un espacio principal. Por ejemplo,.gitignore
no es un formato de archivoUsar
pathlib
desde Python3.4 en adelante.fuente
Mira el módulo fnmatch. Eso hará lo que intentas hacer.
fuente
Una manera fácil podría ser:
os.path.splitext(file)
devolverá una tupla con dos valores (el nombre del archivo sin extensión + solo la extensión). El segundo índice ([1]) le proporcionará solo la extensión. Lo bueno es que de esta manera también puedes acceder al nombre de archivo con bastante facilidad, si es necesario.fuente
o quizás:
fuente
Un hilo viejo, pero puede ayudar a futuros lectores ...
Me gustaría evitar el uso de .lower () en los nombres de archivo si no por otra razón que la de hacer que el código sea más independiente de la plataforma. (Linux es sensible a mayúsculas y minúsculas, .lower () en un nombre de archivo seguramente corromperá su lógica eventualmente ... o peor, ¡un archivo importante!)
¿Por qué no usar re ? (Aunque para ser aún más robusto, debe verificar el encabezado del archivo mágico de cada archivo ... ¿Cómo verificar el tipo de archivos sin extensiones en Python? )
Salida:
fuente
fuente
fuente
.
some.test.file.mp3
fuente
fuente