在python中简单编辑二进制文件

Cod*_*nts 8 python io binary

这应该很容易! 但我一直无法找到这个问题的答案.

使用python,我想将二进制文件读入内存,修改文件的前四个字节,然后将文件写回.

必须有一种简单的方法来编辑四个小字节!对?

kin*_*all 14

为什么要读取整个文件以在开头改变四个字节?这不应该工作吗?

with open("filename.txt", "r+b") as f:
     f.write(chr(10) + chr(20) + chr(30) + chr(40))
Run Code Online (Sandbox Code Playgroud)

即使您需要从文件中读取这些字节来计算新值,您仍然可以:

with open("filename.txt", "r+b") as f:
    fourbytes = [ord(b) for b in f.read(4)]
    fourbytes[0] = fourbytes[1]  # whatever, manipulate your bytes here
    f.seek(0)
    f.write("".join(chr(b) for b in fourbytes))
Run Code Online (Sandbox Code Playgroud)


Emi*_*lva 6

with open(filename, 'r+b') as f:
  bytes = f.read(4)
  newbytes = 'demo'
  f.seek(0)
  f.write(newbytes)
Run Code Online (Sandbox Code Playgroud)

  • 我的问题是使用“ w + b”而不是“ r + b”作为您的解决方案。谢谢。 (2认同)