определение, является ли тип MIME двоичным или текстовым - PullRequest
5 голосов
/ 07 октября 2010

Существует ли библиотека, позволяющая определить, является ли данный тип контента двоичным или текстовым?

Очевидно, text/* всегда является текстовым, но для таких вещей, как application/json, image/svg+xml или даже application/x-latex, это довольно сложно без проверки реальных данных.

Ответы [ 2 ]

2 голосов
/ 07 октября 2010

Существует оболочка для libmagic для python - pymagic . Это самый простой способ выполнить то, что вы хотите. Имейте в виду, что магия так же хороша, как отпечатки пальцев. Вы можете иметь ложные срабатывания, если что-то «похоже» на другой формат файла, но в большинстве случаев Pymagic даст вам то, что вам нужно.

Единственное, на что следует обратить внимание, так это на «простое решение» проверки того, находится ли какой-либо из символов «вне» диапазона печати ASCII, поскольку вы, скорее всего, столкнетесь с юникодом, который будет выглядеть как двоичный (и фактически быть бинарным), хотя это просто текстовое содержание.

2 голосов
/ 07 октября 2010

Обычно программы, определяющие тип MIME, также сообщают вам набор символов.Например, file(1) (и соответствующий libmagic) даст следующий вывод:

> file --mime-encoding /bin/ls
/bin/ls: binary
> file --mime-encoding /etc/passwd
/etc/passwd: us-ascii
...