Python: Как вставить новые двоичные данные с указанным смещением c? - PullRequest
0 голосов
/ 04 февраля 2020

Я относительно новичок в этом, у меня есть двоичный файл, в который я хочу вставить данные с указанным смещением 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)

Это просто перезаписывает данные в этом месте, я хочу вставить новые данные. Возможно, я ошибаюсь, но, надеюсь, кто-то укажет мне правильное направление. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...