2010-12-08 75 views
6

我在将数据附加到二进制文件时遇到问题。当我寻求()到一个位置,然后写入()在那个位置,然后读取整个文件,我发现数据没有写在我想要的位置。相反,我发现在每一个其他数据/文本之后都是正确的。如何寻找并追加到Python中的二进制文件?

我的代码

file = open('myfile.dat', 'wb') 
file.write('This is a sample') 
file.close() 

file = open('myfile.dat', 'ab') 
file.seek(5) 
file.write(' text') 
file.close() 

file = open('myfile.dat', 'rb') 
print file.read() 

#prints: This is a sample **text** 

你可以看到,寻求不起作用。我如何解决这个问题,是否有其他方法来实现这一目标?

感谢

回答

15

在某些系统上,'ab'力量都写在文件的结尾发生。你可能想要'r+b'

+2

从文档的`seek`方法:“如果该文件只打开追加模式写入(模式‘A’),这种方法本质上是一个没有-op,“ – bgporter 2010-12-08 14:13:50

+0

@bgporter:你支持还是反驳我说的话?我真的不知道。 – 2010-12-08 14:16:22

1

退出寻找命令。您已经打开文件以附加'a'。

2

R + B应该工作,你想