我正在试图弄清楚如何使用Python更新二进制文件中的数据。
我已经习惯使用“数组”阅读和编写完整的文件,但我在编辑时遇到了麻烦。
这是我尝试过的:
my_file.seek(100)
my_array = array.array('B')
my_array.append(0)
my_array.tofile(my_file)
基本上,我想更改位置100处字节的值。上面的代码确实更新了值,但随后截断了文件的其余部分。我希望能够更改位置100的值,而无需修改文件中的任何其他内容。
请注意,我正在编辑多千兆字节的文件,所以我不想将整个内容读入内存,更新内存,然后将其写回磁盘。
答案 0 :(得分:5)
根据the documentation of open()
,您应该以{{1}}模式打开文件,以避免截断行为。
答案 1 :(得分:1)
您是否以'r+b'
模式打开文件?