Python 写入文件时将一个字节转换为两个字节

Python 写入文件时将一个字节转换为两个字节,python,python-3.x,byte,Python,Python 3.x,Byte,我不明白为什么我的代码不起作用。 我正在编写一些非常简单的代码,将单个字节写入文件 将open(“foo.txt”,“w+”,encoding='utf-8')作为f: f、 写入('\x80') 正如你在下面看到的,当我只想写一个字节时,它就写了两个字节。。。有人能帮忙吗 它是2个字节,因为UTF-8占据2个字节的位置,如果将其解码为UTF-16,您将看到4个字节。它们大于1字节,因为您将其写入UTF结构,而不是作为字节 您必须以二进制模式打开它 with open("foo.tx

我不明白为什么我的代码不起作用。 我正在编写一些非常简单的代码,将单个字节写入文件

将open(“foo.txt”,“w+”,encoding='utf-8')作为f:
f、 写入('\x80')
正如你在下面看到的,当我只想写一个字节时,它就写了两个字节。。。有人能帮忙吗


它是2个字节,因为UTF-8占据2个字节的位置,如果将其解码为UTF-16,您将看到4个字节。它们大于1字节,因为您将其写入UTF结构,而不是作为字节

您必须以二进制模式打开它

with open("foo.txt", "wb+") as f:
    f.write(b'\x80')

您正在将编码设置为
utf-8
,因此它将其编码为
utf-8
@tkausl如果我不这样做,它会显示“UnicodeEncodeError:'charmap'编解码器无法对位置0中的字符“\x80”进行编码:字符映射为“您是否尝试以“wb+”的形式打开文件,是否有一种pythonic方法可以将
'\x80'
转换为
b'\x80'
?这取决于您从字节([80])中获得“\x80”的位置,关键在于如何获得80。