2010-11-27 29 views
5

J'essaie d'obtenir une liste d'extensions de fichier basées sur la première partie d'un type MIME en utilisant le module mimetypes. par exemple. 'Image' est la première partie de 'image/jpeg', 'image/png' etc.Comment obtenir une liste d'extensions de fichiers pour un type de fichier général?

Voici mon code:

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)) 

et c'est la sortie:

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') 

Il manque beaucoup de formats, par exemple. '.flac' pour l'audio. mimetypes.types_map['.flac'].split('/')[0] renvoie 'audio', alors pourquoi cela n'est-il pas inclus dans la sortie?

+0

Quelle version de Python? J'ai essayé 2.6 et 3.1 et mimetypes.types_map ne contient pas '.flac'. – knutin

Répondre

3

J'ai trouvé la solution:

utilisation:

mimetypes.init() 

après avoir importé le module.

Ceci lit des types mime supplémentaires à partir du système d'exploitation. (see python documentation)

+1

docs expliquent ce que 'init' fait: http://docs.python.org/library/mimetypes.html#mimetypes.init – SilentGhost