2012-10-29 60 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

相關問題