如何用Python覆盖文件中间的一些字节?

seb*_*ien 20 python patch file

我希望能够使用Python覆盖文件中给定偏移量的某些字节.

我的尝试失败了,导致:

  • 覆盖偏移处的字节,但也会在文件模式="w"或"w +"之后截断文件
  • 在文件末尾附加字节(文件模式="a"或"a +")

是否可以通过Python以便携方式实现这一目标?

Ben*_*ank 35

试试这个:

fh = open("filename.ext", "r+b")
fh.seek(offset)
fh.write(bytes)
fh.close()
Run Code Online (Sandbox Code Playgroud)

  • @Ben Blank:"r +"(更好,"r + b")就是答案."a +"对此无效.无论搜索是什么,用"a"或"a +"打开的文件都会在其末尾添加任何写入. (2认同)

tom*_*jen 5

根据此python页面,您可以键入file.seek寻求特定的偏移量。然后,您可以编写任何内容。

为避免文件被截断,您可以使用“ a +”将其打开,然后向右偏移。

  • 不,答案以“ r + b”开头(二进制,因为我们要覆盖字节)。“ man 3 fopen”部分的说明应解释可用模式之间的差异。 (2认同)