0
我试图从二进制格式的文件中读取数据并将其存储在二维数组中。但是,我得到读取Python:将二进制文件解压缩为二维数组并给出长度错误
error: unpack requires a bytes object of length 2
错误本质上我有什么是一样的东西
import os, struct
from itertools import chain
packets = value1 #The number of packets in the data stream
dataLength = value2 #bytes of data per packet
packHeader = [[0 for x in range(14)] for y in range(packets)]
data = [[0 for x in range(dataLength)] for y in range(packets)]
for i in range(packets):
packHeader[i][0] = struct.unpack('>H', file.read(2))
packHeader[i][1] = struct.unpack('>H', file.read(2))
....
packHeader[i][13] = struct.unpack('>i', file.read(4))
packHeader[i]=list(chain(*packHeader[i])) #Deals with the tuple issue ((x,),(y,),...) -> (x,y,...)
for j in range(dataLength):
data[i][j] = struct.unpack('<h', file.read(2))
当到达这一点上,产生上述错误。我不知道为什么。 dataLength
和packets
都是偶数。所以,想象一次解开2个字节应该不成问题。有什么想法吗?
编辑我没有检查看看如果我一次读入一个字节的数据会发生什么。所以
data[i][j] = struct.unpack('<b', file.read(1))
和那工作得很好。它只是不喜欢解开其他任何东西。
EDIT 2我也只是说干就干,作出更为简洁,就像这样,
data[i] = [struct.unpack('<h', file.read(2)) for j in range(dataLength)]
仍然会产生同样的错误 - 只是更紧凑。