libmagicへのPythonバインディング
このトピックに関するさまざまな答えはすべて非常に混乱するので、libmagicのさまざまなバインディングのこの概要をもう少し明確にしたいと思っています。以前はマンマドリが短い答えを出しました利用可能なオプションをリストし提供しました。
libmagic
ファイルのMIMEタイプを判別する場合、選択したツールが呼び出されfile、そのバックエンドが呼び出されlibmagicます。(プロジェクトのホームページを参照してください。)プロジェクトはプライベートcvs-repositoryで開発されていますが、githubに読み取り専用のgitミラーがあります。
pythonでlibmagicバインディングのいずれかを使用する場合に必要になるこのツールには、という独自のpythonバインディングがすでに付属していますfile-magic。専用のドキュメントはあまりありませんが、c-libraryのmanページをいつでも確認できますman libmagic。基本的な使用法は、readmeファイルで説明されています。
import magic
detected = magic.detect_from_filename('magic.py')
print 'Detected MIME type: {}'.format(detected.mime_type)
print 'Detected encoding: {}'.format(detected.encoding)
print 'Detected file type name: {}'.format(detected.name)
これとは別に、サンプルファイルに示すようにMagicを使用magic.open(flags)してオブジェクトを作成することにより、ライブラリを使用することもできます。
toivotuoとewr2sanはどちらもfile-magic、fileツールに含まれているこれらのバインディングを使用します。彼らは誤ってpython-magicパッケージを使用していると思い込んでいます。これは、両方の場合ことを、示しているようだfileとpython-magicインストールされている、Pythonのモジュールはmagic前者を指します。
python-magic
これは、Simon Zimmermannが彼の回答で話しているライブラリで、Claude COULOMBEやGringo Suaveでも使用されています。
filemagic
注:このプロジェクトは2013年に最後に更新されました!
同じc-apiに基づいているため、このライブラリにはにfile-magic含まれるものといくつかの類似点がありlibmagicます。それはマンマドリによってのみ言及され、他の答えはそれを採用していません。