Как эффективно заменить строку в огромном наполовину двоичном файле в Python - PullRequest
0 голосов
/ 12 июня 2019

Мне нужно изменить строку в заголовке ascii огромного двоичного файла .ply (формат облака точек) [см .: http://paulbourke.net/dataformats/ply/].Мне не нужно ничего менять.

Я использую Python 3.7

Я уже нашел какое-то решение для замены в текстовых файлах [ Как искать и заменятьтекст в файле, используя Python? , но ни решение Jack Aidley, ни решение jfs не соответствуют моим потребностям.Первое означает загрузить и переписать весь файл, чего в моем случае следует избегать.Второе невозможно с двоичными частями файла.

Мне нужно перейти от этого:

ply
***rest of the header****
property list int int vertex_indices
end_header
^Q(^LI<99><A7> ***rest of the huge binary parts***

к этому:

ply
***rest of the header****
property list uchar int vertex_indices
end_header
^Q(^LI<99><A7> ***rest of the huge binary parts***

1 Ответ

0 голосов
/ 12 июня 2019

Скорее всего, sed соответствует задаче:

sed -e '0,/property list int int vertex_indices/ s/property list int int vertex_indices/property list uchar int vertex_indices/' file

Я обычно без проблем заменял строки в двоичных файлах (например, Windows .EXE-файлах).

...