質問

特定のコンテンツタイプがバイナリかテキストベースかを判断できるライブラリはありますか?

明らかに 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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top