¿Cómo puedo saber si un archivo es binario (sin texto) en Python?
Estoy buscando en un gran conjunto de archivos en Python y sigo obteniendo coincidencias en archivos binarios. Esto hace que la salida se vea increíblemente desordenada.
Sé que podría usar grep -I, pero estoy haciendo más con los datos de lo que permite grep.
En el pasado, solo hubiera buscado caracteres más grandes que 0x7f, pero utf8y similares, lo hacen imposible en los sistemas modernos. Idealmente, la solución sería rápida, pero cualquier solución servirá.
grepsí misma utiliza para identificar archivos binarios es similar a la publicada por Jorge Orpinel a continuación . A menos que establezca la -zopción, solo buscará un carácter nulo ( "\000") en el archivo. Con -z, busca "\200". Los interesados y / o escépticos pueden consultar la línea 1126 de grep.c. Lo siento, no pude encontrar una página web con el código fuente, pero, por supuesto, puede obtenerlo en gnu.org o mediante una distribución .
git diffGNU como difftambién utilizan la misma estrategia. No estoy seguro de si es tan frecuente porque es mucho más rápido y más fácil que la alternativa, o si es simplemente por la relativa rareza de los archivos UTF-16 en los sistemas que tienden a tener estas utilidades instaladas.