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))