让我们看一下简单的代码:
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。
答案 0 :(得分:3)
如果你把
f.flush()
写'Y'后,read(1)读取正确的值(在本例中为'A')。
所以我的猜测是,在Windows上,read()不强制缓冲区在* nix时刷新。