2

我收到上面的错误,当我试图从二进制文件中解压缩浮点数时,它要求我输入 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 上运行。任何帮助,将不胜感激!

4

2 回答 2

2

您可能忘记以二进制模式打开文件。在文本模式下,0x0d 0x0a序列会缩短为0x0a,并且您的文件大小会错误。

于 2012-10-29T14:54:41.280 回答
0

好吧,read()分开做;它是 I/O,所以正如您刚刚了解到的那样,它可能会失败。

要进行调试,请在读取数据时打印数据和数据长度,这将帮助您了解发生了什么问题。

如果没有看到文件和周围的代码,很难更具体。您是否以二进制模式打开文件?

于 2012-10-29T14:55:26.667 回答