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您确定需要解压缩所有文件吗?您可以通过数组将文件读入
中,修改一些字段,然后再写入。