Ответ на указанный вопрос, в котором говорится, что бинарный поиск работает только с записями фиксированной длины, неверен.И вам вообще не нужно выполнять поиск, поскольку у вас есть несколько элементов для поиска.Просто пройдитесь по всему файлу по одной строке за раз, создайте словарь key:offset
для каждой строки, а затем для каждого элемента поиска перейдите к интересующей записи, используя os.lseek
со смещением, соответствующим каждому ключу.
Конечно, если вы не хотите читать весь файл ни разу, вам придется выполнить бинарный поиск.Но если построение индекса можно амортизировать в течение нескольких поисков, возможно, сохранить индекс, если вы выполняете только один поиск в день, тогда поиск не нужен.