2

バイナリ ファイルから float をアンパックしようとしているときに、文字列の長さ 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 では問題なく動作しますが、何らかの理由で Wi​​ndows 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 に答える