解码Python3中的字节字符串时出错[TypeError:必须是str,而不是bytes]

2024-04-25 01:48:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在Python3.6中使用一段为Python2.7编写的代码,但是我在处理字节字符串的方式上遇到了困难。 代码是用来读取在我编写代码之前存在的.dat文件。 运行未接触的P2.7脚本将返回以下错误:

import numpy as np

buff = ''
dt = np.dtype([('var1', np.uint32, 1), ('var2', np.uint8, 1)])

with open(filename, 'rb') as f:
    for line in f:
        dat = line
--->    buff += dat

    data = np.frombuffer(buffer=buff, dtype=dt)

TypeError: must be str, not bytes

如果我做得对,Python2会毫无怨言地将读取的字节连接到字符串buff中,而Python3关心字节和字符串之间的差异。 类型转换line to str(line)返回以下错误:

^{pr2}$

我该怎么做?buff应该是什么类型的? 有适合P2.7和P3.6的解决方案吗?在

编辑

结果数据文件名.dat根本不是由unicode字符串组成的。我编辑了这个问题,去掉了对我错误假设的提及,并添加了一些我在试图展示一个我现在意识到与之相关的最小示例时遗漏的代码行。很抱歉给你添麻烦了。在


Tags: 文件字符串代码编辑字节as错误np