Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonでファイルのMIMEタイプを判定する2つの方法【mimetypesとpython-magic】

PythonでファイルのMIMEタイプ(メディアタイプ)を調べたい場面は、Webアプリケーションの開発やファイルアップロード機能の実装などでよくあります。Pythonには標準ライブラリとして mimetypes モジュールが用意されており、これを使えば手軽にMIMEタイプを推測できます。

ただし、mimetypes モジュールは主にファイル名の拡張子をもとにMIMEタイプを推測する仕組みのため、拡張子が存在しないファイルや、実際の内容と拡張子が一致していないファイルに対しては、正確な結果が得られない場合がある点に注意が必要です。

mimetypesモジュールを使う方法

mimetypes.MimeTypes() クラスの guess_type() メソッドにファイルパスを渡すと、そのファイルのMIMEタイプを文字列として取得できます。

>>> import mimetypes
>>> print(mimetypes.MimeTypes().guess_type('my_file.txt')[0])
text/plain

この例では、テキストファイルである my_file.txt のMIMEタイプとして text/plain が返されています。guess_type() はタプル形式で結果を返すため、最初の要素(インデックス0)を取り出しています。

python-magicを使う方法

より信頼性の高い判定を行いたい場合は、サードパーティ製の python-magic ライブラリを利用するのがおすすめです。このライブラリは、Unix系OSで広く使われている libmagic を利用しており、拡張子ではなくファイルの内容(マジックナンバー)を解析してMIMEタイプを特定します。そのため、拡張子がないファイルや偽装されたファイルでも、より正確な判定が可能です。

まず、pipでインストールします。

pip install python-magic

あとは以下のように Magic クラスのインスタンスを作成し、from_file() メソッドでファイルを指定するだけです。

>>> import magic
>>> mime = magic.Magic(mime=True)
>>> mime.from_file("my_file.txt")
text/plain

Magic(mime=True) とすることで、詳細な説明文ではなくMIMEタイプ形式の文字列が返されます。

注意点

  • Windows環境では、別途 libmagic のDLLが必要になる場合があります。Windows向けには python-magic-bin パッケージをインストールすると簡単です。
  • 単純な用途であれば標準ライブラリの mimetypes で十分ですが、セキュリティ面や正確性が求められる場面では python-magic を選びましょう。

まとめ

PythonでファイルのMIMEタイプを判定するには、手軽な標準ライブラリの mimetypes と、ファイル内容を解析して高精度に判定できる python-magic の2つの方法があります。用途や求められる精度に応じて使い分けるのが良いでしょう。

  1. Windowsでファイルタイプ(拡張子)ごとのアイコンを変更する方法

    Windowsでは、フォルダーのアイコンなら簡単にカスタマイズできます。フォルダーのプロパティを開き、「カスタマイズ」タブにある「アイコンの変更」ボタンをクリックするだけです。しかし、特定のファイルタイプ(拡張子)のアイコンを変更したい場合、Windowsには標準でその機能が用意されていません。 ファイルタイプのアイコンを変更したい理由は人それぞれです。たとえば、現在のアイコンが気に入らない、あるいは独自に利用しているカスタムファイル形式にアイコンが割り当てられていない、といったケースが考えられます。理由が何であれ、この記事ではWindows 10でファイルタイプのアイコンを簡単に変更する方

  2. Windows 10で大容量ファイルを簡単に見つける方法|ストレージ不足を解消する3つの手法

    「ストレージの空き領域が不足しています」という警告が表示され、空き容量を確保するのに苦労していませんか?そのようなときに最も効果的なのが、Windows 10の中にある大容量ファイルを特定することです。どのファイルが不要なのかを正確に把握できれば、それらを削除してストレージ容量を回復できます。 では、PC上の大きなファイルはどうやって探せばよいのでしょうか? 実は、Windows 10で大容量ファイルを見つける方法はいくつかあります。標準搭載のツールを使う方法と、「Disk Analyzer Pro」のようなサードパーティ製アプリを使う方法です。Disk Analyzer Proなら、あっとい