2012-04-21 16 views
5

Pythonのmimetypesモジュールは特に正確ではなく、その結果をファイル拡張子に基づいています。より正確な結果を得るために私は考えることができる唯一の方法はとてもとしてsubprocess.PopenとUnixのfileコマンドを呼び出すことです:Pythonのより良い、より正確なMIMEタイプ検出

import subprocess 
mimetype = subprocess.Popen(['file', '/path/to/file', '--mime-type', '-b'], 
    stdout=subprocess.PIPE).stdout.read().strip() 

これは無粋な感じ。 に送信することなく、fileを呼び出しても同じ精度を達成するより良い方法はありますか?

答えて

7

あなたは試してみることができます:magic's mimetype

+0

これは 'file'と同じMIME識別コードを使います。 –

+2

真実ですが、彼が求めていたよりエレガントです。 :) – Mads

2

を私は似たものを使用したが、わずかに短縮さ:

import subprocess 
mimeType = subprocess.check_output(['file', '-ib', '/path/to/file']).strip() 

それは、よりエレガントではないかもしれないが、それは短く、読み少し簡単だ、と私は常に好みますそれ。

関連する問題