解包需要长度的字符串参数:Windows问题?

时间:2012-10-29 14:52:18

标签: python struct unpack

我收到上面的错误,它要求我的字符串长度为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上工作。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

要进行调试,在阅读时打印数据和数据长度,这将有助于您了解出现了什么问题。

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