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

时间:2009-02-03 21:31:54

标签: python file patch

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

我的尝试失败了,导致:

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

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

3 个答案:

答案 0 :(得分:32)

试试这个:

fh = open("filename.ext", "r+b")
fh.seek(offset)
fh.write(bytes)
fh.close()

答案 1 :(得分:4)

根据this python page,您可以键入file.seek以寻求特定的偏移量。然后你可以写任何你想要的东西。

为避免截断文件,您可以使用“a +”打开它,然后寻找正确的偏移量。

答案 2 :(得分:0)

非常低效,但我现在还不知道其他任何方式,不会覆盖中间的字节(正如Ben Blanks所做的那样):

a=file('/tmp/test123','r+')
s=a.read()
a.seek(0)
a.write(s[:3]+'xxx'+s[3:])
a.close()

将在偏移3处写'xxx':123456789 --> 123xxx456789