我有两个二进制数据文件,我想替换第二个二进制数据文件的一部分内容 这是我到目前为止的示例代码
Binary_file1 = open("File1.yuv","rb")
Binary_file2 = open("File2.yuv","rb")
data1 = Binary_file1.read()
data2 = Binary_file2.read()
bytes = iter(data1)
for i in range(4, 10):
data2[i] = next(bytes)
在我将data2 [i]与next(字节)等同的部分失败并且给出了一个错误,说“' str'对象不支持项目分配“ 我不明白的部分是这是一个字符串对象如何解决这个错误,任何帮助将不胜感激。 请注意这里的二进制文件很大,我想避免创建重复文件,因为我将遇到内存问题
答案 0 :(得分:0)
您打开文件并阅读它。所以,你在data2
中有字符串。字符串不支持项目分配。
相反,你可以这样做:
data2 = data[2][:i] + next(bytes) + data[2][i + 1:]
答案 1 :(得分:0)
字符串无法在内部更改(即它们是不可变的)。试试这个:
a = 'abcde'
a[2] = 'F'
您将收到错误消息。但是,这将有效。
a = a.replace(a[2], 'F')
您可能最好建立一个新字符串,然后将其切片到您的data2中。
newstring = ''
for i in range(4, 10):
newstring += next(bytes)
data2 = data2.replace(data2[4:10], newstring)
当然,这里的问题是data2 [4:10]在data2中可能不是唯一的,在这种情况下,您将有多个替换。所以,以下可能会更好:
data2 = data2[:4] + newstring + data[10:]