Python cómo leer binario en bruto de un archivo? (audio / video / texto)

Quiero leer el archivo binario sin formato de un archivo y colocarlo en una cadena. Actualmente estoy abriendo un archivo con la marca “rb” e imprimiendo el byte, pero aparece como caracteres ASCII (para el texto que es, para los archivos de video y audio está dando símbolos y errores). Me gustaría obtener los 0 y 1 en bruto 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ás 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)) 

saldrá:

 hex: 64, decimal: 100, binary: 01100100 

Lo que estás leyendo ES realmente el contenido “binario en bruto” de tu archivo “binario”. Por extraño que parezca, los datos binarios no son “0 y 1” sino palabras binarias (también conocidas como bytes, cf http://en.wikipedia.org/wiki/Byte ) que tienen un valor entero (base 10) y pueden interpretarse Como los caracteres ascii. O como enteros (que es como usualmente se realizan operaciones binarias). O como hexadecimal. Para 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 sin procesar” de lo que realmente tiene …

Ahora la pregunta: ¿por qué desea que estos datos sean exactamente “0 y 1”?