2010-11-27 24 views
5

Estoy tratando de obtener una lista de extensiones de archivos basadas en la primera parte de un tipo MIME utilizando el módulo mimetypes. p.ej. 'Imagen' es la primera parte de 'image/jpeg', 'image/png', etc.¿Cómo obtener una lista de extensiones de archivo para un tipo de archivo general?

Este es mi código:

import mimetypes 

def get_extensions_for_type(general_type): 
    for ext in mimetypes.types_map: 
     if mimetypes.types_map[ext].split('/')[0] == general_type: 
      yield ext 

VIDEO = tuple(get_extensions_for_type('video')) 
AUDIO = tuple(get_extensions_for_type('audio')) 
IMAGE = tuple(get_extensions_for_type('image')) 

print("VIDEO = " + str(VIDEO)) 
print('') 
print("AUDIO = " + str(AUDIO)) 
print('') 
print("IMAGE = " + str(IMAGE)) 

y este es el resultado:

VIDEO = ('.m1v', '.mpeg', '.mov', '.qt', '.mpa', '.mpg', '.mpe', '.avi', '.movie', '.mp4') 

AUDIO = ('.ra', '.aif', '.aiff', '.aifc', '.wav', '.au', '.snd', '.mp3', '.mp2') 

IMAGE = ('.ras', '.xwd', '.bmp', '.jpe', '.jpg', '.jpeg', '.xpm', '.ief', '.pbm', '.tif', '.gif', '.ppm', '.xbm', '.tiff', '.rgb', '.pgm', '.png', '.pnm') 

Esto le falta muchos formatos, ej. '.flac' para audio. mimetypes.types_map['.flac'].split('/')[0] devuelve 'audio', entonces ¿por qué esto no está incluido en la salida?

+0

¿Qué versión de Python? He intentado tanto 2.6 como 3.1 y mimetypes.types_map no contiene '.flac'. – knutin

Respuesta

3

he encontrado la solución:

uso:

mimetypes.init() 

después de importar el módulo.

Esto lee tipos de mime adicionales del sistema operativo. (see python documentation)

+1

explica lo que hace 'init': http://docs.python.org/library/mimetypes.html#mimetypes.init – SilentGhost

Cuestiones relacionadas