[Reimpresso] Python lê e grava arquivos binários

Endereço original: https://blog.csdn.net/and_then111/article/details/86744938

1. O que é um arquivo .bin

Um arquivo com extensão .bin é um arquivo binário. Ao contrário dos arquivos de texto, os arquivos binários abertos com o Bloco de notas, o Notepad ++ etc. são ilegíveis.
É assim:
Abriu um arquivo .bin com o Bloco de Notas
Mas os arquivos .bin podem ser abertos com software como o WINHEX. Todos os dados armazenados no arquivo binário podem ser entendidos apenas pela leitura de acordo com uma regra predeterminada.

O WINHEX converte o conteúdo dos arquivos binários em formato hexadecimal:
Abriu um arquivo .bin com WINHEX
as vantagens dos arquivos binários em comparação aos arquivos de texto: economia de espaço de armazenamento, leitura e gravação rápidas e certa proteção de criptografia.

Sobre arquivos binários e arquivos de texto, você pode consultar esta série de programadores de blogs: não me blefe: arquivos binários

2. Leia e grave arquivos binários

2.1 Lendo arquivos binários

Leia o conteúdo do arquivo binário "x.bin" e produza um byte de cada vez.
(1) Coloque o caminho do arquivo filepath, aqui o arquivo .bin e o arquivo de código são colocados na mesma pasta, para que nenhum caminho absoluto seja gravado.

(2) open(filepath, 'rb'): Abra o arquivo na forma de leitura, preste atenção ao usorb Para ler o arquivo binário.

(3) Lembre-se de fechar: binfile.close()

import struct
import os
if __name__ == '__main__':
    filepath='x.bin'
    binfile = open(filepath, 'rb') #打开二进制文件
    size = os.path.getsize(filepath) #获得文件大小
    for i in range(size):
        data = binfile.read(1) #每次输出一个字节
        print(data)
    binfile.close()

Execute, produza o resultado:
O resultado

Se você deseja ver o resultado decimal, pode usar o método struct.unpack () no Python :: O significado do
struct.unpack('B', data)parâmetro aqui Bé converter o tipo de caracter não assinado dos dados da estrutura C em número inteiro no Python.
O número obtido aqui é o tipo de tupla, portanto Use num[0]para remover o número.

for i in range(size):
    data = binfile.read(1)
    num = struct.unpack('B', data)
    print(num[0])

A saída é:
Insira a descrição da imagem aqui

2.2 Escrevendo arquivos binários

(1) Suponha que você queira escrever o número 123 em um arquivo binário, primeiro você precisa converter o número int type em bytes.
data.to_bytes(1, 'big'): Parâmetro ' 1': convertido em bytes de 1 byte; parâmetro 'big': byteorder.

Veja ao tipo de uma variável , você pode usartype()

a=123
print('a:',type(a))
b=a.to_bytes(1,'big')
print('b:',type(b))

Saída:

(2) open(filepath, 'ab+'): abra o arquivo binário no modo de gravação.
Nota ao escrever: usede + Para concluir a gravação adicional, use wbPara concluir a substituição.

(3) Fecharbinfile.close()

data=123
content= data.to_bytes(1, 'big')

filepath='123.bin'
binfile = open(filepath, 'ab+') #追加写入
binfile.write(content)
print('content',content)
binfile.close()

2.3 Modo de arquivo aberto

Lista os diferentes modos de abrir o arquivo, que é open()o segundo parâmetro. O parâmetro com b significa arquivo binário de operação e arquivo de texto de operação sem b.
Trecho da leitura e gravação de arquivos Python (open (), close (), com open () como f ...

Padrão Descrição do produto
r Abra o arquivo como somente leitura. O ponteiro do arquivo será colocado no início do arquivo. Este é o modo padrão.
rb Abra um arquivo em formato binário para somente leitura. O ponteiro do arquivo será colocado no início do arquivo. Este é o modo padrão.
r + Abra um arquivo para leitura e gravação. O ponteiro do arquivo será colocado no início do arquivo.
rb + Abra um arquivo em formato binário para leitura e gravação. O ponteiro do arquivo será colocado no início do arquivo.
W Abra um arquivo apenas para gravação. Se o arquivo já existir, ele será substituído. Se o arquivo não existir, crie um novo arquivo.
wb Abra um arquivo em formato binário apenas para gravação. Se o arquivo já existir, ele será substituído. Se o arquivo não existir, crie um novo arquivo.
w + Abra um arquivo para leitura e gravação. Se o arquivo já existir, ele será substituído. Se o arquivo não existir, crie um novo arquivo.
wb + Abra um arquivo em formato binário para leitura e gravação. Se o arquivo já existir, ele será substituído. Se o arquivo não existir, crie um novo arquivo.
uma Abra um arquivo para anexar. Se o arquivo já existir, o ponteiro do arquivo será colocado no final do arquivo. Em outras palavras, o novo conteúdo será gravado após o conteúdo existente. Se o arquivo não existir, crie um novo arquivo para gravação.
de Abra um arquivo para anexar em formato binário. Se o arquivo já existir, o ponteiro do arquivo será colocado no final do arquivo. Em outras palavras, o novo conteúdo será gravado após o conteúdo existente. Se o arquivo não existir, crie um novo arquivo para gravação.
a + Abra um arquivo para leitura e gravação. Se o arquivo já existir, o ponteiro do arquivo será colocado no final do arquivo. O arquivo estará no modo de acréscimo quando for aberto. Se o arquivo não existir, crie um novo arquivo para leitura e gravação.
de + Abra um arquivo para anexar em formato binário. Se o arquivo já existir, o ponteiro do arquivo será colocado no final do arquivo. Se o arquivo não existir, crie um novo arquivo para leitura e gravação.

Acho que você gosta

Origin www.cnblogs.com/charleechan/p/12698637.html
Recomendado
Clasificación