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()
函数(调用windowsCreateFile()函数)的实现不同
在发动机罩下)。不幸的是,我无法再次找到我的来源。。。最后尝试使用模式'w+b'
打开文件。