Python FileObject读取与写入类似

Python FileObject读取与写入类似,python,file-io,seek,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

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

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??
我使用Python2.5和2.7从官方网站下载windows

f.flush()
写入“Y”后,后续读取(1)读取正确的值(在本例中为“A”)


所以我猜在windows上read()不会强制缓冲区刷新,而在*nix上则会

在linux上使用python 2.6时,
test.bin
在末尾包含
YAB
,最后一次读取返回
A
。然而,windows上的Python2.6导致了
YBB
,最后一次读取返回
B
。非常奇怪,有什么想法吗?我似乎记得在windows下以
'r+'
模式打开的文件与在un*x上打开的文件的行为不同,因为
fopen()
函数(调用windows
CreateFile()函数)的实现不同
在发动机罩下)。不幸的是,我无法再次找到我的来源。。。最后尝试使用模式
'w+b'
打开文件。