Python 3.x 解包二进制文件内容;修改值;然后将内容打包到新的二进制文件中
我有一个二进制文件和有限的知识结构的文件。我想解压文件的内容,更改一个值,然后将修改后的内容重新打包到一个新的二进制文件中。如果我能成功地完成解包,我当然可以修改其中一个值;然后我相信我将能够处理重新打包以创建一个新的二进制文件。但是,我在完成拆包时遇到困难。这就是我目前所拥有的Python 3.x 解包二进制文件内容;修改值;然后将内容打包到新的二进制文件中,python-3.x,Python 3.x,我有一个二进制文件和有限的知识结构的文件。我想解压文件的内容,更改一个值,然后将修改后的内容重新打包到一个新的二进制文件中。如果我能成功地完成解包,我当然可以修改其中一个值;然后我相信我将能够处理重新打包以创建一个新的二进制文件。但是,我在完成拆包时遇到困难。这就是我目前所拥有的 image = None one = two = three = four = five = 0 with open(my_file, 'rb') as fil: one = struct.unpack('i'
image = None
one = two = three = four = five = 0
with open(my_file, 'rb') as fil:
one = struct.unpack('i', fil.read(4))[0]
two = struct.unpack('i', fil.read(4))[0]
three = struct.unpack('d', fil.read(8))[0]
four = struct.unpack('d', fil.read(8))[0]
five = struct.unpack('iiii', fil.read(16))
image = fil.read(920)
当我在上面显示的代码部分下面设置断点时,我可以看到上面的
image
变量的类型是
。fil
的类型是
。如何解压缩此图像中的数据变量?来自@Stanislav的建议直接引导我找到了此问题的解决方案。最终,我不需要struct unpack/pack来实现我的目标。下面的代码大致说明了解决方案
with open(my_file, 'rb') as fil:
data = bytearray(fil.read())
mylist = list(data)
mylist[8] = mylist[8] + 2 #modify some fields
mylist[9] = mylist[9] + 2
mylist[16] = mylist[16] + 3
data = bytearray(mylist)
another_file = open("other_file.bin", "wb")
another_file.write(data)
another_file.close()
A您确定需要解压缩所有文件吗?您可以通过数组将文件读入中,修改一些字段,然后再写入。