PythonでファイルのMIMEタイプを取得する方法です。
これによって、入力されてきたファイルの形式で判断して動作を変えることが出来ますね。
取得
import mimetypes
mime = mimetypes.guess_type(ファイルのパス)
print(mime) # => (MIMEタイプ, エンコード形式)
たったのこれだけです。
エンコード形式の部分には、gzipで圧縮されたファイルだったりするとなにか値が出ますが、基本的にNoneとなります。
ファイルの形式によって動作を変える
簡単な例として、Markdownファイルだけ受け付けるとしましょう。
それ以外のファイルが入力されてきたら、エラーメッセージを出します。
markdown.py
import mimetypes
import sys
input = sys.argv[1]
mime = mimetypes.guess_type(input)
if mime[0] = "text/markdown":
print("お前はMarkdownファイルだな!")
else:
print("{mime}のタイプのファイルはあっちいけシッシッ!".format(mime=mime[0]))
実行すると...
$ python3 markdown.py hoge.md
お前はMarkdownファイルだな!
$ python3 markdown.py fuga.jpg
image/jpegのタイプのファイルはあっちいけシッシッ!