Это не эффективный способ чтения всего файла в памяти.
Правильный путь - привыкнуть к индексам.
Сначала необходимо заполнить словарь начальной позицией каждой строки (ключ - номер строки, а значение - суммарная длина предыдущих строк).
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 - вы получите целевую строку.
Используя такой подход (непосредственно для обработки необходимой позиции файла без прохождения через весь файл), вы экономите значительную часть времени и можете обрабатывать огромные файлы.