У меня была такая же проблема (нужно извлечь из огромной строки файла).
Конечно, я могу каждый раз проходить через все записи в файле и останавливать его, когда счетчик будет равен целевой строке, но это не работает эффективно в случае, когда вы хотите получить множественное количество определенных строк. Это привело к решению основной проблемы - как обращаться непосредственно к нужному месту файла.
Я узнал следующее решение:
Сначала я заполнил словарь начальной позицией каждой строки (ключ - номер строки, а значение - накопленная длина предыдущих строк).
t = open(file,’r’)
dict_pos = {}
kolvo = 0
length = 0
for each in t:
dict_pos[kolvo] = length
length = length+len(each)
kolvo = kolvo+1
в конечном счете, целевая функция:
def give_line(line_number):
t.seek(dict_pos.get(line_number))
line = t.readline()
return line
t.seek (line_number) - команда, которая выполняет удаление файла до начала строки.
Итак, если вы в следующий раз выполните readline - вы получите целевую строку.
Используя такой подход, я сэкономил значительную часть времени.