basado en texto para determinar si un tipo MIME es binario o
-
28-09-2019 - |
Pregunta
¿Hay una biblioteca que permite determinar si un tipo de contenido determinado es binario o de texto?
Obviamente text/*
siempre es textual, pero por cosas como application/json
, image/svg+xml
o incluso application/x-latex
que es bastante difícil sin inspeccionar los datos reales.
Solución
Hay un contenedor para libmagic para el pitón - pymagic . Esa es la mejor manera de lograr lo que desea. Tenga en cuenta que la magia es sólo tan buena como la huella dactilar. Usted puede tener falsos positivos si algo se ve '' como otro formato de archivo, pero la mayoría de los casos pymagic le dará lo que necesita.
Una cosa a tener en cuenta sería la 'solución simple' de la comprobación para ver si alguno de los personajes son 'fuera' del rango ASCII imprimible, como es probable que Unicode encuentro que se parecerá a binario (y, de hecho, sea ??binaria) a pesar de que su contenido simplemente textual.
Otros consejos
Por lo general, los programas que determinan el tipo MIME también le dirá el conjunto de caracteres. Por ejemplo, file(1)
(y libmagic correspondiente) dará el siguiente resultado:
> file --mime-encoding /bin/ls
/bin/ls: binary
> file --mime-encoding /etc/passwd
/etc/passwd: us-ascii