gpt4 book ai didi

python - 将单个字节写入 python 3.x 中的文件

转载 作者:太空狗 更新时间:2023-10-30 01:13:26 25 4
gpt4 key购买 nike

在以前的 Python 2 程序中,我使用以下行将单个字节写入二进制文件:

self.output.write(chr(self.StartElementNew))

但是从 Python 3 开始,如果不先将字符串和字符编码为字节(这对于适当的多字节字符支持是有意义的),就不能将它们写入流

现在有byte(self.StartElementNew)之类的东西吗?如果可能,与 Python 2 兼容?

最佳答案

对于 0-127 范围内的值,以下行将始终在 Python 2 ( str ) 和 3 ( bytes ) 中生成正确的类型:

chr(self.StartElementNew).encode('ascii')

这不适用于 128-255 范围内的值,因为在 Python 2 中,str.encode()调用包括隐式 str.decode()使用 ASCII 作为编解码器,这将失败。

对于 0-255 范围内的字节,我会定义一个单独的函数:

if sys.version_info.major >= 3:
as_byte = lambda value: bytes([value])
else:
as_byte = chr

然后在写入单个字节时使用它:

self.output.write(as_byte(self.StartElementNew))

或者,使用 six library , 它有一个 six.int2byte() function ;该库会为您进行 Python 版本测试,以便为您提供合适的函数版本:

self.output.write(six.int2byte(self.StartElementNew))

关于python - 将单个字节写入 python 3.x 中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35038999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com