Tenho vindo a trabalhar em um projeto onde é necessário programar um arquivo binário, de um certo tipo, a um chip AT28C256. As especificidades não são importantes além do fato de que o arquivo precisa ser 32.768 bytes de tamanho (exatamente).
Eu tenho algum código "mínimo problema" aqui:
o = open("images.bin", "wb")
c = 0
for i in range(256):
for j in range(128):
c += 1
o.write(chr(0).encode('utf-8'))
print(c)
Isso, para mim, parece escrever 32.768 bytes para um arquivo (a divisão em i, j é necessário porque eu preciso escrever uma imagem para o dispositivo) como 128 * 256 = 32768. E a saída de c é 32768!
Mas o arquivo que ele cria é 28672 bytes! O fato de que este é 7000 em hexadecimal não passou por mim, mas eu não sei por que isso está acontecendo. Alguma ideia?
Você deve chamar o.close()
para liberar o buffer de gravação e fechar o arquivo corretamente.