替换从文件读取的二进制数据并从头开始替换为字符串

问题描述 投票:0回答:1

我想实现一个

replace
函数来用字符串替换字节,如下所示:

#!/usr/bin/env python3
import struct

def generate():
    fd = open("a.bin","wb")
    for i in range(0,36):
        fd.write(i.to_bytes(1,"little"))
    fd.close()
    return

def replace(buf,target):
    for i in range(0,len(target)):
        buf[i] = target[i]
    return

def main():
    generate()

    fd = open("a.bin","rb")
    data = fd.read()
    fd.close()

    s = struct.Struct("<32s I")
    x,y = s.unpack(data)
    print(x)
    target = "hello world"
    replace(x,target)
    print(x)
    return

main()

但是报错:

TypeError: 'bytes' object does not support item assignment
python-3.x
1个回答
0
投票

我认为,这样更有效率:

def replace(buf,target):
    b = bytes(target,'utf-8')
    return b + buf[len(b):]

...

   x = replace(x,target)
© www.soinside.com 2019 - 2024. All rights reserved.