MIMEタイプがバイナリかテキストベースかを決定します
-
28-09-2019 - |
質問
特定のコンテンツタイプがバイナリかテキストベースかを判断できるライブラリはありますか?
明らかに text/*
常にテキストですが、ようなものです application/json
, image/svg+xml
あるいは application/x-latex
実際のデータを検査せずにかなり注意が必要です。
解決
PythonのLibmagicのラッパーがあります - ピマジック. 。それはあなたが望むものを達成するための最も簡単な方法です。魔法は指紋と同じくらい良いだけであることに留意してください。何かが別のファイル形式のように「見える」場合、偽陽性を持つことができますが、ほとんどの場合、Pymagicはあなたが必要なものを提供します。
注意すべきことの1つは、バイナリのように見える(実際にはバイナリである)Unicodeに遭遇する可能性が高いため、キャラクターのいずれかが印刷可能なASCII範囲の「外側」であるかどうかを確認するためにチェックする「単純な解決策」です。単なるテキストコンテンツですが。
他のヒント
通常、MIMEタイプを決定するプログラムは、キャラクターセットも教えてくれます。例えば、 file(1)
(および対応するLibmagic)は、次の出力を示します。
> file --mime-encoding /bin/ls
/bin/ls: binary
> file --mime-encoding /etc/passwd
/etc/passwd: us-ascii
所属していません StackOverflow