如何在Python中查找并追加到二进制文件?

17 投票
4 回答
67240 浏览
提问于 2025-04-16 08:14

我在往一个二进制文件里添加数据时遇到了问题。当我用 seek() 方法定位到某个位置,然后在那个位置用 write() 方法写入数据,接着再读取整个文件时,我发现数据并没有写到我想要的位置。相反,我发现它出现在了每段数据或文本的后面。

我的代码

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()  # -> This is a sample text

你可以看到 seek 方法并没有起作用。我该怎么解决这个问题呢?有没有其他方法可以做到这一点?

谢谢

4 个回答

3

不用管 seek 命令。你已经用 'a' 模式打开了文件,这样就可以直接在文件末尾添加内容了。

6

r+b应该可以按照你的想法工作。

37

在某些系统中,'ab'这个选项会让所有的写入操作都发生在文件的末尾。你可能更想用'r+b'这个选项。

撰写回答