Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Formato Binário de Leitura

Olá, eu consegui compreender corretamente o uso de "w", "r", "a" ao abrir arquivos em Python, mas não o modificador "b", por exemplo em:

logo = open('python-logo.png', 'rb')
data = logo.read()
logo.close()

logo2 = open('python-logo2.png', 'wb')
logo2.write(data)
logo2.close()

O que ele significa de fato ? Ele só serve para fotos ? Em que casos devo usar ?

Obrigado!

2 respostas
solução!

Olá Guilherme, tudo bem com você?

O modificador "b" significa binário, sendo utilizado para indicar que o arquivo que está sendo manipulado é um arquivo binário, ou seja, um arquivo que contém dados não-textuais, como imagens, músicas, vídeos, entre outros. Quando você abre um arquivo no modo binário, o Python não faz nenhuma conversão de caractere, o que significa que você lê e escreve diretamente os bytes do arquivo.

Por exemplo, suponhamos que você queira abrir um arquivo de imagem chamado "imagem.png" e exibir o conteúdo desse arquivo em um programa Python. Você pode fazer isso usando a função open() com o modificador "rb", que indica que o arquivo deve ser aberto em modo binário de leitura. Em seguida, você pode ler os dados do arquivo usando o método read(), como no exemplo abaixo:

imagem = open('imagem.png', 'rb')
dados_imagem = imagem.read()
print(dados_imagem)

Agora, suponhamos que você queira gravar uma nova imagem em um arquivo chamado "nova_imagem.png". Nesse caso, você pode usar a função open() com o modificador "wb", que indica que o arquivo deve ser aberto em modo binário de gravação. Em seguida, você pode gravar os dados da nova imagem no arquivo usando o método write(), como no exemplo abaixo:

dados_para_nova_imagem = b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00\x01\x00\x00\xff\xdb\x00C\x00\x05\x03\x04\x04\x04\x03\x05\x04\x04\x04\x05\x05\x05\x06\x07\x0c\x08\x07\x07\x07\x07\x0f\x0b\x0b\t\x0c\x11\x0f\x12\x12\x11\x0f\x11\x11\x13\x16\x1c\x17\x13\x14\x1a\x15\x11\x11\x18!\x18\x1a\x1d\x1d\x1f\x1f\x1f\x13\x17"$"\x1e$\x1c\x1e\x1f\x1e\xff\xdb\x00C\x01\x05\x05\x05\x07\x06\x07\x0e\x08\x08\x0e\x1e\x14\x11\x14\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\xff\xc0\x00\x11\x08\x00\n\x00\n\x03\x01"\x00\x02\x11\x01\x03\x11\x01\xff\xc4\x00\x16\x00\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x01\x06\xff\xc4\x00$\x10\x00\x02\x02\x01\x03\x03\x05\x01\x00\x00\x00\x00\x00\x00\x00\x00\x01\x03\x02\x04\x05\x00\x06\x11\x12\x141\x07\x13!"3a\xff\xc4\x00\x14\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\xff\xc4\x00\x1b\x11\x00\x02\x02\x03\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x03\x00\x12\x02\x04\x111\xff\xda\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00?\x00<\xf4gkc2;\x07!\x93\xcba\xe892\x8eL.\xe4kXu\x98\xb2\xbd0\xd8\xf562\n\xaa\xb8\xc8\xc4\x83.\xa90\xc8\xc7\x8e\x07 \xe5[\x92\xcf\xb5\x1f\xb9\xf05\x9d\xef-\xa4\xf6\xa9\xb4\xf5\xd7\x7f\xec\xa80\x883\x8f\x1d@|\x1e?\xba\xbay\x1b\rOk\x97\xb0\x96\xa5l\x02\xc2\x7f\xff\xd9'

nova_imagem = open('nova_imagem.png', 'wb')
nova_imagem.write(dados_para_nova_imagem)

Importante, os exemplos apresentados acima são fictícios, utilizados apenas como recurso didático.

É importante destacar que quando abrimos um arquivo binário em um editor de texto, é possível vermos caracteres estranhos ou ilegíveis. Isso acontece porque os arquivos binários são armazenados em formato de bytes, que podem ser representados por diferentes caracteres dependendo da codificação utilizada. Quando você abre o arquivo em um editor de texto, ele tenta interpretar esses bytes como caracteres legíveis, mas nem sempre consegue fazê-lo corretamente.

Por fim, embora o modificador "b" seja importante para manipulação de arquivos binários, em geral, utilizamos mais os modificadores "w" ou "r". Porém, entender os modificadores binários é uma habilidade importante para quem trabalha com programação, especialmente em áreas que lidam com dados binários, como a de processamento de imagens e criptografia, por exemplo.

Espero ter ajudado. Não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Em caso de dúvidas estou à disposição.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Não restou mais dúvidas, obrigado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software