我收到上面的错误,它要求我的字符串长度为4,因为我试图从二进制文件中解压缩一个浮点数。我的代码在我的Mac上运行得非常好,但它在Windows上不尽如人意。代码如下:
for i in range (0,elec_array.nb_chan):
elec_array.chan[i].x = struct.unpack('f',f.read(4))[0]
elec_array.chan[i].y = struct.unpack('f',f.read(4))[0]
问题发生在elec_array.chan[i].x
行。然而,它不会立即发生,它将首先在循环中进行几次迭代,然后最终给出需要长度为4的字符串的错误。再一次,代码在Mac上完美运行,但出于某种原因停止在我的Windows 7 PC上工作。任何帮助将不胜感激!
答案 0 :(得分:2)
您可能忘记以二进制模式打开文件。在文字模式下,0x0d
0x0a
序列缩短为0x0a
,您的文件大小错误。
答案 1 :(得分:0)
好吧,分开做read()
;它是I / O所以它可以,正如你刚刚学到的那样,失败了。
要进行调试,在阅读时打印数据和数据长度,这将有助于您了解出现了什么问题。
如果没有看到文件和周围的代码,很难更具体。你是以二进制模式打开文件吗?