Как перезаписать несколько байтов в середине файла с помощью Python?

Я хотел бы иметь возможность перезаписать несколько байтов с заданным смещением в файле, используя Python.

Мои попытки с треском провалились и привели к:

  • перезаписывает байты со смещением, а также обрезает файл сразу после (file mode = "w" или "w+")
  • добавление байтов в конец файла (file mode = "a" или "a+")

Возможно ли достичь этого с помощью Python в переносном режиме?

3 ответа

Попробуй это:

fh = open("filename.ext", "r+b")
fh.seek(offset)
fh.write(bytes)
fh.close()

В соответствии с этой страницей Python вы можете ввести file.seek для поиска определенного смещения. Затем вы можете написать все, что вы хотите.

Чтобы избежать усечения файла, вы можете открыть его с помощью "+", а затем искать смещение вправо.

Очень неэффективно, но я не знаю другого пути прямо сейчас, который не перезаписывает байты в середине (как это делает Бен Бланкс):

a=file('/tmp/test123','r+')
s=a.read()
a.seek(0)
a.write(s[:3]+'xxx'+s[3:])
a.close()

напишет "ххх" со смещением 3: 123456789 --> 123xxx456789

Другие вопросы по тегам