【发布时间】:2017-03-20 15:15:52
【问题描述】:
我在尝试msgpack.unpack 时收到以下错误:
ExtraData: unpack(b) received extra data.
我的部分代码:
r1=requests.get('http://localhost:3000/fs?path='+r.json()['object'])
unp = msgpack.unpackb(r1.content)
有人可以帮忙吗?
【问题讨论】:
我在尝试msgpack.unpack 时收到以下错误:
ExtraData: unpack(b) received extra data.
我的部分代码:
r1=requests.get('http://localhost:3000/fs?path='+r.json()['object'])
unp = msgpack.unpackb(r1.content)
有人可以帮忙吗?
【问题讨论】:
文档对此不是很清楚,但msgpack.unpackb 是一个“一次性”解包器——你不能给它一个更大的流,里面有额外的数据。我假设您正在获取多个 msgpack 对象,您可以使用msgpack.Unpacker 阅读它们,如
r1=requests.get('http://localhost:3000/fs?path='+r.json()['object'])
for unp in msgpack.unpackb(r1.content):
do something...
这样做的原因是msgpack 反序列化器以块的形式读取数据以提高效率。对于unpackb,您只能返回一个对象,它的块读取器消耗的数据流比它应有的要多,并且您丢失了数据。
【讨论】: