2012-10-29 58 views
2

我收到上面的错误,它询问我的字符串长度为4,因为我试图从二进制文件中解压缩一个浮点数。我的代码在我的Mac上运行得非常好,但是它在Windows上很短。代码如下:解压缩需要长度的字符串参数: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

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

+0

这绝对是答案。我感到很傻。非常感谢! – user1217248

+0

@ user1217248,在StackOverflow上感谢某人的常用方法是点击答案左侧的向上箭头,然后选择最正确的答案并点击其下方的复选标记。 –

+0

啊,原谅我不知道如何在这里使用这个堆栈溢出呢。我已经把复选标记提供了正确的答案,不幸的是我需要更多的代表才能发出代表。 – user1217248

0

那么,分别做read();它是I/O,所以它可以像你刚刚学到的那样失败。

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

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

+0

正如其他用户所说,我没有打开二进制模式,这也是你也建议。谢谢你的帮助! – user1217248

相关问题