如何在python中查找和附加到二进制文件?

时间:2010-12-08 13:50:21

标签: python file binary seek

我在将数据附加到二进制文件时遇到问题。当我寻找()到一个位置,然后在该位置写()然后读取整个文件,我发现数据没有写在我想要的位置。相反,我发现它正好在每个其他数据/文本之后。

我的代码

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**

你可以看到搜寻不起作用。我如何解决这个问题,还有其他方法可以解决这个问题吗?

由于

4 个答案:

答案 0 :(得分:20)

在某些系统上,'ab'强制所有写入都发生在文件末尾。您可能需要'r+b'

答案 1 :(得分:4)

r + b应按您的意愿工作

答案 2 :(得分:2)

省略搜索命令。您已经打开文件以附加'a'。

答案 3 :(得分:0)

注意:记住新字节要覆盖先前的字节

按照python 3语法

with open('myfile.dat', 'wb') as file:
    b = bytearray(b'This is a sample')
    file.write(b)

with open('myfile.dat', 'rb+') as file:
    file.seek(5)
    b1 = bytearray(b'  text')
    #remember new bytes over write previous bytes
    file.write(b1)

with open('myfile.dat', 'rb') as file:
    print(file.read())

输出

b'This   textample'

在写以前的字节之前记住新的字节