簡體   English   中英

如何以字節為單位對python2中的文件進行十六進制編輯?

[英]How can I hex edit files in python2 byte by byte?

我正在嘗試創建一個python腳本,它將編輯我加載的文件的十六進制值,然后卡住了。 如何在python中逐字節十六進制編輯文件?

如果文件非常大並且您只進行覆蓋操作(無插入或刪除),則mmap模塊允許您將文件視為一個大型可變字符串。 這允許您逐個字節地編輯文件的內容,或編輯整個切片,而無需將其全部加載到內存中( mmap對象將根據需要懶惰地將文件的一部分加載到內存中和內存中)。

使用起來有點麻煩,但在需要時它非常強大。

例:

$ xxd data
0000000: a15e a0fb 4455 1d0f b104 1506 0e88 08d6  .^..DU..........
0000010: 8795 d6da 790d aafe 9d6a 2ce5 f7c3 7c97  ....y....j,...|.
0000020: 4999 ab6b c728 352e b1fd 88e0 6acf 4e7d  I..k.(5.....j.N}
$ python
>>> import mmap
>>> f = open('data', 'a+')
>>> m = mmap.mmap(f.fileno(), 0)
>>> m[24:48]
'\x9dj,\xe5\xf7\xc3|\x97I\x99\xabk\xc7(5.\xb1\xfd\x88\xe0j\xcfN}'
>>> m[24:48] = 'a'*24
>>> m.close()
>>> f.close()
>>> ^D
$ xxd data
0000000: a15e a0fb 4455 1d0f b104 1506 0e88 08d6  .^..DU..........
0000010: 8795 d6da 790d aafe 6161 6161 6161 6161  ....y...aaaaaaaa
0000020: 6161 6161 6161 6161 6161 6161 6161 6161  aaaaaaaaaaaaaaaa

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM