2009-11-24 21 views
2

我想弄清楚如何使用Python更新二進制文件中的數據。使用Python更新二進制文件的值

我已經很舒服的閱讀和使用「數組」編寫完整的文件,但我在編輯時遇到了麻煩。

這是我已經試過:

my_file.seek(100) 

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

從本質上講,我想在100的位置上面的代碼不會更新值來改變字節的值,但隨後會截斷文件的其餘部分。我希望能夠更改位置100的值,而無需修改文件中的其他任何內容。

請注意,我正在編輯多GB文件,因此我不想將整個內容讀入內存,更新內存,然後寫回到磁盤。

回答

5

根據the documentation of open(),您應該打開文件'rb+'模式以避免截斷行爲。

+0

就是這樣。謝謝! 由於我正在打開文件進行寫作,因此我在'wb +'中打開了它,這更有意義。這就是我沒有徹底閱讀文檔所得到的結果。 – 2009-11-24 20:46:10

1

您是否在'r+b'模式下打開文件?