Как получить список расширений файлов для общего типа файлов? - PullRequest
7 голосов
/ 27 ноября 2010

Я пытаюсь получить список расширений файлов, основанный на первой части MIME-типа, используя модуль mimetypes. например. 'image' является первой частью 'image / jpeg', 'image / png' и т. д.

Это мой код:

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

и это вывод:

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

В нем отсутствует много форматов, например. '.flac' для аудио. mimetypes.types_map['.flac'].split('/')[0] возвращает 'audio', так почему это не включено в вывод?

1 Ответ

4 голосов
/ 27 ноября 2010

Я нашел решение:

использование:

mimetypes.init()

после импорта модуля.

Это читает дополнительные типы MIME из операционной системы. ( см. Документацию по Python )

...