INNER CODE UNIT · Python

es_binario

Hainrixz/whatsapp-agentkit · scripts/audit.py:131

def es_binario(ruta: Path) -> bool:
    """
    Heuristica: si el primer bloque tiene un byte nulo o no es UTF-8, es binario.

    Usamos un decodificador incremental a proposito: leer 4096 bytes puede
    cortar un caracter multibyte por la mitad (los recuadros ── de este repo
    ocupan 3 bytes), y un decode() comun lo tomaria como binario, salteando
    el archivo del chequeo 3 sin decir nada.
    """
    try:
        with ruta.open("rb") as f:
            trozo = f.read(4096)
        if b"\x00" in trozo:
            return True
        codecs.getincrementaldecoder("utf-8")().decode(trozo, final=False)
        return False
    except (UnicodeDecodeError, OSError):
        return True

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…