【问题标题】:Python array.frombytes can't read byte objectPython array.frombytes 无法读取字节对象
【发布时间】:2023-01-20 19:34:41
【问题描述】:

此代码段引发错误,到目前为止我找不到解决方案。

from array import array
arr = array('B',[8, 3, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 2])
ab = arr.tobytes()
array.frombytes(ab)
TypeError                                 Traceback (most recent call last)
Cell In[117], line 4
      2 arr = array('B',[8, 3, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 2])
      3 ab = arr.tobytes()
----> 4 array.frombytes(ab)

TypeError: descriptor 'frombytes' for 'array.array' objects doesn't apply to a 'bytes' object

我在 Python 3.10.8 和全新的 3.11.0 环境中进行了处理。两者都不走运

【问题讨论】:

  • array类中定义的frombytes方法是一个普通的实例方法,不是classmethodstaticmethod。它需要在类的实例上调用。像这样从类本身调用它意味着 ab 将用作 self,这是行不通的。链接的副本是我能找到的关于这个主题的最流行的副本;我会继续寻找更通用的规范。
  • 这回答了你的问题了吗? Convert bytearray to array.array('B')

标签: python


【解决方案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()

arr1 = array('B')
arr1.frombytes(ab)

输出:

>>> arr1
array('B', [8, 3, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 2])

【讨论】:

  • 你为什么重新打开这个?
  • 不;我用“Y 对象的描述符 X 不适用于 Z 对象”的答案结束了这个问题。这是同一个问题,同一个原因。
  • @KarlKnechtel。我保证我没有看到这个答案!!!我没有说谎!!!
  • @KarlKnechtel(我们可能应该在这里停止对话,这不是正确的地方)很可能是因为很难正常意外触发错误,在这种情况下模块和类都是datetime并且类具有描述符@987654329 @.
猜你喜欢
  • 2020-01-23
  • 2021-07-22
  • 2019-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-26
  • 2015-10-25
相关资源
最近更新 更多