24

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

我的尝试惨遭失败并导致:

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

是否可以通过 Python 以可移植的方式实现这一目标?

4

3 回答 3

46

尝试这个:

fh = open("filename.ext", "r+b")
fh.seek(offset)
fh.write(bytes)
fh.close()
于 2009-02-03T21:39:57.193 回答
5

根据这个 python 页面,您可以键入 file.seek 来寻找特定的偏移量。然后你可以写任何你想要的。

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

于 2009-02-03T21:39:43.357 回答
-1

非常低效,但我现在不知道任何其他方式,它不会覆盖中间的字节(就像 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

于 2009-02-03T21:44:25.127 回答