2010-11-27 4 views
5

mimetypesモジュールを使用して、MIMEタイプの最初の部分に基づいてファイル拡張子のリストを取得しようとしています。例えば。 '画像' は '画像/ JPEG' の最初の部分である '画像/ 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'を返します。なぜ、これは出力に含まれていませんか?

+0

どのバージョンのPythonですか?私は2.6と3.1の両方を試しました。そして、mimetypes.types_mapは '.flac'を含んでいません。 – knutin

答えて

3

私は解決策が見つかりました:モジュールをインポートした後

mimetypes.init() 

使用します。

これは、オペレーティングシステムから追加のMIMEタイプを読み込みます。 (see python documentation

+1

docsは 'init'が何を行うかを説明しています:http://docs.python.org/library/mimetypes.html#mimetypes.init – SilentGhost

関連する問題