Leia o arquivo binário em Python
-
Leia um arquivo binário com a função
open()
em Python -
Leia um arquivo binário com
pathlib.Path
em Python -
Leia um arquivo binário com a função
numpy.fromfile()
em Python
O programa ou o processador interno interpreta um arquivo binário. Ele contém os bytes como o conteúdo. Quando lemos um arquivo binário, um objeto do tipo bytes
é retornado.
Leia um arquivo binário com a função open()
em Python
Em Python, temos a função open()
usada para criar um objeto de arquivo passando seu caminho para a função e abrindo um arquivo em um modo específico, modo de leitura por padrão. Quando abrimos arquivos binários, temos que especificar o parâmetro b
ao abrir esses arquivos no modo de leitura, escrita ou anexação. Neste tutorial, vamos lidar com o modo de leitura binária - rb
.
No código abaixo, vamos ler um arquivo binário e imprimir um caractere do arquivo:
with open("sample.bin", "rb") as f:
data = f.read()
print(data[2])
Resultado:
83
Se imprimirmos caracteres individuais, podemos ver os inteiros.
Python tem um pacote chamado struct
, que tem muitos métodos e pode ser usado para lidar com dados binários armazenados em arquivos, bancos de dados e outros recursos.
O struct.unpack()
é usado para ler dados compactados em um layout de formato especificado. Esse layout, que é usado ao compactar e descompactar dados, é especificado usando caracteres de formato. Esses caracteres de formato, junto com seu tamanho, são mostrados abaixo:
Observe que a função struct.unpack()
sempre retorna uma tupla.
import struct
with open("sample.bin", "rb") as f:
data = f.read()
unpack_result = struct.unpack("hhl", data[0:8])
print(unpack_result)
Resultado:
(1280, 27731, 7037801)
Aqui, hhl
indica int curto, curto e longo como o layout de formato de dados, como podemos ver na saída. É por isso que o buffer para descompactar é de apenas 8 bytes, já que o tamanho do layout do formato é 8 (2 + 2 + 4).
Leia um arquivo binário com pathlib.Path
em Python
Também podemos usar o método read_bytes()
da classe Path
na biblioteca pathlib
para ler um arquivo no modo bytes e então interpretar os dados usando a função struct.unpack()
conforme mostrado anteriormente:
from pathlib import Path
import struct
data = Path("sample.bin").read_bytes()
multiple = struct.unpack("ii", data[:8])
print(multiple)
Resultado:
(1817380096, 7037801)
Leia um arquivo binário com a função numpy.fromfile()
em Python
Outra abordagem interessante é fornecida no módulo NumPy
. Usando a função fromfile()
neste módulo, podemos ler dados binários de arquivos após especificar os dados de formato usando a função dtype()
. Este é considerado um método rápido. O código a seguir mostra como implementar isso:
import numpy as np
with open("sample.bin") as f:
rectype = np.dtype(np.int32)
bdata = np.fromfile(f, dtype=rectype)
print(bdata)
Resultado:
[1817380096 7037801]
Aqui especificamos o tipo de formato como inteiro de 32 bits e extraímos os dados usando a função 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.
LinkedInArtigo relacionado - Python File
- Como obter todos os arquivos de um diretório
- Como Anexar Texto a um Arquivo em Python
- Como verificar se um arquivo existe em Python
- Como encontrar ficheiros com uma certa extensão apenas em Python
- Como ler linhas específicas a partir de um arquivo em Python
- Gravar linha por linha em um arquivo usando Python