1

簡単なコードを見てみましょう:

import os

f = open('test.bin', 'wb')
f.write('X')
f.close()
# test.bin - X

f = open('test.bin', 'r+b')

f.seek(0, os.SEEK_END)
f.write('AB')
# test.bin - XAB

f.seek(0, os.SEEK_SET)
f.write('Y')
# test.bin - YAB

print f.read(1)
# test.bin - YBB and prints B 0_o whhyyy?

f.close()

その場合、なぜ read メソッドは write のように機能するのですか??
公式サイトからの Windows ダウンロードには Python 2.5 と 2.7 を使用しています。

4

1 に答える 1

3

あなたが置く場合

f.flush()

'Y' を書き込んだ後、その後の read(1) は正しい値 (この場合は 'A') を読み取ります。

したがって、私の推測では、Windows では read() はバッファのフラッシュを強制しませんが、*nix では強制的にフラッシュします。

于 2011-12-12T14:27:30.380 に答える