Python how to write to a binary file?

Python how to write to a binary file?

This is exactly what bytearray is for:

newFileByteArray = bytearray(newFileBytes)
newFile.write(newFileByteArray)

If youre using Python 3.x, you can use bytes instead (and probably ought to, as it signals your intention better). But in Python 2.x, that wont work, because bytes is just an alias for str. As usual, showing with the interactive interpreter is easier than explaining with text, so let me just do that.

Python 3.x:

>>> bytearray(newFileBytes)
bytearray(b{x03xffx00d)
>>> bytes(newFileBytes)
b{x03xffx00d

Python 2.x:

>>> bytearray(newFileBytes)
bytearray(b{x03xffx00d)
>>> bytes(newFileBytes)
[123, 3, 255, 0, 100]

Use struct.pack to convert the integer values into binary bytes, then write the bytes. E.g.

newFile.write(struct.pack(5B, *newFileBytes))

However I would never give a binary file a .txt extension.

The benefit of this method is that it works for other types as well, for example if any of the values were greater than 255 you could use 5i for the format instead to get full 32-bit integers.

Python how to write to a binary file?

To convert from integers < 256 to binary, use the chr function. So youre looking at doing the following.

newFileBytes=[123,3,255,0,100]
newfile=open(path,wb)
newfile.write((.join(chr(i) for i in newFileBytes)).encode(charmap))

Leave a Reply

Your email address will not be published. Required fields are marked *