Python中array.frombytes读取bytes对象触发TypeError报错求助
问题解决:TypeError: descriptor 'frombytes' for 'array.array' objects doesn't apply to a 'bytes' object
错误出在array.frombytes(ab)这一行——frombytes()是array.array的实例方法,不能直接通过类调用,必须先创建对应类型的数组实例,再调用该方法写入bytes数据。
修正方案1:创建空实例后调用frombytes
from array import array arr = array('B',[8, 3, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 2]) ab = arr.tobytes() # 初始化同类型的空数组 new_arr = array('B') # 调用实例方法frombytes写入数据 new_arr.frombytes(ab) print(new_arr) # 输出: array('B', [8, 3, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 2])
修正方案2:直接用构造函数从bytes创建数组
更简洁的方式是利用array.array的构造函数,直接传入类型码和bytes对象:
from array import array arr = array('B',[8, 3, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 2]) ab = arr.tobytes() # 直接通过构造函数生成数组 new_arr = array('B', ab) print(new_arr) # 输出: array('B', [8, 3, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 2])
两种方案都能在Python 3.10+环境中正常运行,解决你遇到的类型错误。
内容的提问来源于stack exchange,提问作者linusrg
相关产品推荐
相关产品推荐

