在Python3中,当我正在阅读二进制文件时,为什么"b"会成为我的内容的前缀?

del*_*ber 1 python

例如,我正在尝试按如下方式读取文件

fd = open('mydb.dbf', 'rb')
print(fd.read(1))
Run Code Online (Sandbox Code Playgroud)

输出是:

B '\ X03'

我只希望'\ x03'.额外角色来自哪里?

aba*_*ert 6

没有额外的性格.你有一个bytes对象,其内容是单个字节\x03.

print函数打印str任何对象的表示.甲bytes对象打印出作为b'\x03'.但这b不是价值的一部分而是引号(或者,就此而言,反斜杠,x或两位数).

为了说服自己这个事实,试试print(len(my_bytes))print(my_bytes[0]).长度是1; 第一个值是(字节)数字3.

(如果你不想要一个bytes对象,你不应该以二进制模式打开文件.但是,考虑到第一个字符是一个控件-C,你可能确实想要一个bytes对象.)

  • @HansEngel:不,不是.文件中的第一个字符是`\ x03`; 你真的认为那是UTF-8吗?并且,如果是,正确的做法是在文本模式下打开它,而不是以二进制模式打开它然后逐个解码. (2认同)