Я относительно новичок в этом, у меня есть двоичный файл, в который я хочу вставить данные с указанным смещением c, в данном случае 12 байтов. Я корректирую адрес смещения на 12 и начинаю запись в новом месте, но в настоящее время я использую режим записи r+b
, и это просто перезаписывает данные в месте поиска. Я хочу, чтобы он вставлял данные с этим смещением и увеличивал длину файла на 12 байтов. Я использую struct.pack и file.write для записи данных. Я думаю, что режим добавления может быть способом go, но это записывает в конец файла, если я не ошибаюсь.
Смещения: [488, 214316, 472, 456, 214680, 214852, 214884, 215472, 215612, 215684, 233544, 234636, 234952, 237352, 237860, 559436, 254032, 254224, 257840]
Я увеличиваю адрес всех этих смещений на сумму, добавленную с использованием этого кода:
index = 1 #The offset to start increasing from
while index != 19:
ClassA.offset[index] = ClassA.offset[index] + 12
index = index + 1
Это увеличивает все эти адреса смещения на 12, за исключением индекса 0, что я и хочу. Затем в той части моего кода, где я записываю данные в файл:
ClassA.file = open(ClassA.filename, 'r+b')
ClassA.file.seek(ClassA.offset[1])
data = struct.pack('<6H', X,Y,W,D,A,B)
ClassA.file.write(data)
Это просто перезаписывает данные в этом месте, я хочу вставить новые данные. Возможно, я ошибаюсь, но, надеюсь, кто-то укажет мне правильное направление. Спасибо.