【发布时间】:2016-08-05 13:44:35
【问题描述】:
我有上面列出的错误,但一直无法找到它的含义。我是 numpy 及其 {.frombuffer()} 命令的新手。触发此错误的代码是:
ARRAY_1=400000004
fid=open(fn,'rb')
fid.seek(w+x+y+z) #w+x+y+z=
if(condition==0):
b=fid.read(struct.calcsize(fmt+str(ARRAY_1)+'b'))
myClass.y = numpy.frombuffer(b,'b',struct.calcsize(fmt+str(ARRAY_1)+'b'))
else:
b=fid.read(struct.calcsize(fmt+str(ARRAY_1)+'h'))
myClass.y = numpy.frombuffer(b,'h',struct.calcsize(fmt+str(ARRAY_1)+'h')) #error this line
其中 fmt 是 '>' where condition==0 和 '二进制文件的读取方式,大端或小端。 fid 是已经打开的二进制文件。
调试到这一步,condition=1,所以感觉if条件的最后一条语句也有错误,只是现在没看到。
正如我之前所说,我试图找出错误的含义,但没有任何运气。如果有人知道为什么我会出错,我真的很想得到帮助。
【问题讨论】:
-
你能发布更多你的代码吗?我认为如果我们知道二进制文件是如何存储到
fid,以及ARRAY_1的设置位置会有所帮助。 -
@Frangipanes 我按照你的要求添加了更多代码,但我不确定它会有多大帮助。
-
能否也包括您的导入,以便我们也知道您正在使用的模块?
-
对于初学者来说,使用
frombuffer读取文件听起来相当高级。我用的不多。对于'h'dtype,它每项读取 2 个字节,而'b'仅使用一个。因此,对于相同大小的缓冲区,您需要不同的计数计算。你比较过calcsize的结果吗? -