FileObject读取就像写一样

时间:2011-12-12 12:35:18

标签: python file-io seek

让我们看一下简单的代码:

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?
一样 我使用Python 2.5和2.7从官方网站下载Windows。

1 个答案:

答案 0 :(得分:3)

如果你把

f.flush()

写'Y'后,read(1)读取正确的值(在本例中为'A')。

所以我的猜测是,在Windows上,read()不强制缓冲区在* nix时刷新。