Write a single byte to a file in python 3.x -
in previous python 2 program, used following line writing single byte binary file:
self.output.write(chr(self.startelementnew))
but since python 3, can't write strings , chars stream without encoding them bytes first (which makes sense proper multibyte char support)
is there such byte(self.startelementnew) now? , if possible, python 2 compatibility?
for values in range 0-127, following line produce right type in python 2 (str
) , 3 (bytes
):
chr(self.startelementnew).encode('ascii')
this doesn't work values in range 128-255 because in python 2, str.encode()
call includes implicit str.decode()
using ascii codec, fail.
for bytes in range 0-255, i'd define separate function:
if sys.version_info.major >= 3: as_byte = lambda value: bytes([value]) else: as_byte = chr
then use when writing single bytes:
self.output.write(as_byte(self.startelementnew))
alternatively, use six
library, has six.int2byte()
function; library python version test provide suitable version of function:
self.output.write(six.int2byte(self.startelementnew))
Comments
Post a Comment