Проблема в том, что при открытии файла мы получаем поток io.TextIOBase с курсором в начале. Перенос строки - это обычный символ (или символы) и даже зная номер строки, которая нас интересует необходимо прочитать файл, чтобы понять где кончилась одна строка и начинается другая. В io.TextIOBase есть метод readline, можно воспользоваться им в цикле, для того чтобы пропустить лишние строки, в памяти при этом будет только текущая строка. Если бы мы знали позицию символа, откуда начинается искомая строка, можно было бы использовать метод seek.