我在将数据附加到二进制文件时遇到问题。当我寻找()到一个位置,然后在该位置写()然后读取整个文件,我发现数据没有写在我想要的位置。相反,我发现它正好在每个其他数据/文本之后。
我的代码
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**
你可以看到搜寻不起作用。我如何解决这个问题,还有其他方法可以解决这个问题吗?
由于
答案 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'
在写以前的字节之前记住新的字节