2016-05-20 9 views
0

Каков наиболее эффективный/питонический способ замены нескольких вхождений последовательности из 3 байтов в файл?заменить последовательность байтов в файле

Я начал с загрузки всего файла в память, поиска, замены, намывания, полоскания, повтора. Но, как я заметил «рецензенты домашней работы», мое решение неэффективно, так как мой файл может быть несколько терабайт, что было бы сложным вложить в память. Мой альтернативный подход состоит в том, чтобы читать побайтно и подходить к нему, сравнивая байты по байт, что звучит неэффективно.

EDIT: отредактирован для четкости. С надеждой.

+0

Перефразируйте вопрос. Вы только пытаетесь заменить 3 байта во всем файле? Или 3 байта на строку? Примеры данных могут помочь – rayray84

+0

Обновлено. Надеюсь, это яснее. :-) – CaseyJones

ответ

0
f = open('workfile', 'r+b') 
f.seek(5)  # Go to the 6th byte in the file 
f.write('abc') 
f.close() 

Я предполагаю, что вам необходимо заменить на известное смещение в файле; это единственный вывод, который я могу придумать из плохо заданного вопроса. Если вы имеете в виду замену типа «a», то «b» и «c» становятся «d», вы должны просто прочитать файл в небольших фрагментах, выполнить подстановки в них и записать результат.

Смежные вопросы