Leer archivo binario en Python
-
Leer un archivo binario con la función
open()
en Python -
Leer un fichero binario con
pathlib.Path
en Python -
Leer un archivo binario con la función
numpy.fromfile()
en Python
El programa o el procesador interno interpreta un archivo binario. Su contenido son los bytes. Cuando leemos un archivo binario, se devuelve un objeto de tipo bytes
.
Leer un archivo binario con la función open()
en Python
En Python, tenemos la función open()
que se utiliza para crear un objeto de archivo pasando su ruta a la función y abriendo un archivo en un modo específico, el modo de lectura por defecto. Cuando abrimos archivos binarios, tenemos que especificar el parámetro b
al abrir dichos archivos en modo lectura, escritura o apéndice. En este tutorial, nos ocuparemos del modo de lectura binaria - rb
.
En el código siguiente, leeremos un archivo binario e imprimiremos un carácter del archivo:
with open("sample.bin", "rb") as f:
data = f.read()
print(data[2])
Producción :
83
Si imprimimos caracteres individuales, entonces podemos ver los enteros.
Python tiene un paquete llamado struct
, que tiene muchos métodos y puede ser utilizado para manejar datos binarios almacenados en archivos, bases de datos y otros recursos.
El método struct.unpack()
se utiliza para leer los datos empaquetados en un formato específico. Dicha disposición, que se utiliza mientras se empaquetan y desempaquetan los datos, se especifica mediante caracteres de formato. Estos caracteres de formato, junto con su tamaño, se muestran a continuación:
Tenga en cuenta que la función struct.unpack()
siempre devuelve una tupla.
import struct
with open("sample.bin", "rb") as f:
data = f.read()
unpack_result = struct.unpack("hhl", data[0:8])
print(unpack_result)
Producción :
(1280, 27731, 7037801)
Aquí, hhl
indica short, short, y long int como la disposición del formato de datos, como podemos ver en la salida. Por eso el buffer para desempaquetar es de sólo 8 bytes, ya que el tamaño de la disposición del formato es 8(2+2+4).
Leer un fichero binario con pathlib.Path
en Python
También podemos utilizar el método read_bytes()
de la clase Path
de la librería pathlib
para leer un fichero en modo bytes y luego interpretar los datos utilizando la función struct.unpack()
como se ha mostrado anteriormente:
from pathlib import Path
import struct
data = Path("sample.bin").read_bytes()
multiple = struct.unpack("ii", data[:8])
print(multiple)
Producción :
(1817380096, 7037801)
Leer un archivo binario con la función numpy.fromfile()
en Python
El módulo NumPy
ofrece otro enfoque interesante. Utilizando la función fromfile()
de este módulo, podemos leer datos binarios de archivos después de especificar los datos de formato utilizando la función dtype()
. Esto se considera un método rápido. El siguiente código muestra cómo implementarlo:
import numpy as np
with open("sample.bin") as f:
rectype = np.dtype(np.int32)
bdata = np.fromfile(f, dtype=rectype)
print(bdata)
Producción :
[1817380096 7037801]
Aquí especificamos el tipo de formato como entero-32 bits y extraemos los datos usando la función fromfile()
.
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn