使用Python更新二进制文件中的值

时间:2009-11-24 20:26:12

标签: python

我正在试图弄清楚如何使用Python更新二进制文件中的数据。

我已经习惯使用“数组”阅读和编写完整的文件,但我在编辑时遇到了麻烦。

这是我尝试过的:

my_file.seek(100)

my_array = array.array('B')
my_array.append(0)
my_array.tofile(my_file)

基本上,我想更改位置100处字节的值。上面的代码确实更新了值,但随后截断了文件的其余部分。我希望能够更改位置100的值,而无需修改文件中的任何其他内容。

请注意,我正在编辑多千兆字节的文件,所以我不想将整个内容读入内存,更新内存,然后将其写回磁盘。

2 个答案:

答案 0 :(得分:5)

根据the documentation of open(),您应该以{{1​​}}模式打开文件,以避免截断行为。

答案 1 :(得分:1)

您是否以'r+b'模式打开文件?