Atualizado: 14/06/2025

Este conteúdo é original e não foi gerado por inteligência artificial.

Arquivos Binários em Python

Diferentemente dos arquivos de texto, os arquivos binários armazenam informações como um conjunto de bytes. Para abrir um arquivo binário para leitura ou escrita, é necessário utilizar o modo "b" junto com o modo de leitura "r" ou gravação "w".

Na leitura, obtemos o conteúdo do arquivo como um conjunto de bytes, enquanto na escrita, o método write() recebe um conjunto de bytes como entrada. Abaixo está um exemplo de como copiar um arquivo binário:

FILENAME = "forest.png"             # nome do arquivo de leitura
NEWFILENAME = "forest_new.png"       # nome do arquivo de gravação

# Lê o arquivo e armazena os dados em image_data
with open(FILENAME, "rb") as file:
    image_data = file.read()

# Grava os bytes lidos em um novo arquivo
with open(NEWFILENAME, "wb") as file:
    file.write(image_data)

print(f"Arquivo {FILENAME} copiado para {NEWFILENAME}")

Neste código, o arquivo localizado no caminho especificado por FILENAME (neste caso, a imagem "forest.png") é lido em formato binário, e os bytes resultantes são armazenados na variável image_data. Em seguida, esses bytes são escritos em um novo arquivo, especificado por NEWFILENAME, copiando assim o conteúdo de um arquivo para outro.

Módulo pickle

O Python também oferece o módulo embutido pickle para facilitar o trabalho com arquivos binários. Esse módulo simplifica o armazenamento e a recuperação de objetos Python em arquivos binários. Ele fornece dois métodos principais:

  • dump(obj, file): grava o objeto obj em um arquivo binário file.
  • load(file): lê dados de um arquivo binário e os converte de volta para um objeto Python.

Abaixo está um exemplo de como salvar os valores de duas variáveis em um arquivo binário:

import pickle

FILENAME = "user.dat"

name = "Tom"
age = 19

# Grava os objetos name e age em um arquivo binário
with open(FILENAME, "wb") as file:
    pickle.dump(name, file)
    pickle.dump(age, file)

# Lê os objetos do arquivo binário
with open(FILENAME, "rb") as file:
    name = pickle.load(file)
    age = pickle.load(file)
    print("Nome:", name, "\nIdade:", age)

A função dump grava os dois objetos em sequência no arquivo. Ao ler o arquivo, podemos recuperar esses objetos na mesma ordem usando a função load. O resultado exibido no console será:

Nome: Tom
Idade: 19

Agora, veja como podemos armazenar e ler uma lista de objetos:

import pickle

FILENAME = "users.dat"

users = [
    ["Tom", 28, True],
    ["Alice", 23, False],
    ["Bob", 34, False]
]

# Grava a lista de usuários em um arquivo binário
with open(FILENAME, "wb") as file:
    pickle.dump(users, file)

# Lê a lista de usuários do arquivo binário
with open(FILENAME, "rb") as file:
    users_from_file = pickle.load(file)
    for user in users_from_file:
        print(user)

De acordo com o objeto que foi gravado usando a função dump, o mesmo será retornado pela função load ao ler o arquivo.

O resultado exibido no console será:

["Tom", 28, True]
["Alice", 23, False]
["Bob", 34, False]

Dessa forma, o módulo pickle permite a fácil gravação e leitura de conjuntos complexos de dados em arquivos binários, preservando a estrutura dos objetos originais.

Documentação oficial:

Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com