textos texto procesamiento leer crear binarios binario archivos archivo python python-2.7 binary

procesamiento - Python cómo leer el binario sin procesar de un archivo?(audio/video/texto)



procesamiento de archivos python (2)

Quiero leer el binario sin formato de un archivo y ponerlo en una cadena. Actualmente estoy abriendo un archivo con el indicador "rb" e imprimiendo el byte, pero aparece como caracteres ASCII (para texto, para archivos de video y audio, está dando símbolos y galimatías). Me gustaría obtener los 0 y 1 crudos si es posible. Esto también debe funcionar para archivos de audio y video, así que simplemente convertir el ascii a binario no es una opción.

file = open(filePath, "rb") with file: byte = file.read(1) print byte


para obtener la representación binaria creo que necesitará importar binascii, entonces:

byte = f.read(1) binary_string = bin(int(binascii.hexlify(byte), 16))[2:].zfill(8)

o, desglosado:

import binascii filePath = "mysong.mp3" file = open(filePath, "rb") with file: byte = file.read(1) hexadecimal = binascii.hexlify(byte) decimal = int(hexadecimal, 16) binary = bin(decimal)[2:].zfill(8) print("hex: %s, decimal: %s, binary: %s" % (hexadecimal, decimal, binary))

dará salida:

hex: 64, decimal: 100, binary: 01100100


Lo que está leyendo ES realmente el contenido "en bruto binario" de su archivo "binario". Por extraño que parezca, los datos binarios no son "0''s y 1''s", sino palabras binarias (aka bytes, cf http://en.wikipedia.org/wiki/Byte ) que tienen un valor entero (base 10) y pueden interpretarse como ascii chars. O como enteros (que es como uno generalmente hace operaciones binarias). O como hexadecimal. Por lo que vale, "texto" es en realidad "datos binarios en bruto" también.

Para obtener una representación "binaria" puede echar un vistazo aquí: Convertir binario a ASCII y viceversa, pero eso no le dará más "datos binarios en bruto" que los que realmente tiene ...

Ahora la pregunta: ¿por qué quieres estos datos como "0 y 1" exactamente?