Сообщить об ошибке.

Метод file.readline() в Python, читает файл построчно

Производит чтение одной строки из файла

Синтаксис:

file.readline([size])

Параметры:

Возвращаемое значение:

Описание:

Метод файла file.readline() читает одну целую строку из файла. Конечный символ новой строки \n сохраняется в строке. Метод возвращает одну строку или байтовый объект в зависимости от режима, в котором открыт файл функцией open().

Если необязательный аргумент size присутствует и неотрицателен, то метод читает строку частями по size байтов, пока не достигнет символ новой строки \n. Если size отрицателен, то считывается строка полностью.

Пустая строка возвращается только тогда, когда достигнут конец файла, т. е. EOF встречается немедленно.

Примеры построчного чтения файла.

Общий случай использования метода файла file.readline().

# подготовим файл 'foo.txt'
>>> text = 'This is 1st line\nThis is 2nd line\nThis is 3rd line\n'
>>> fp = open('foo.txt', 'w+')
# запишем текст в файл 'foo.txt'
>>> fp.write(text)
# 51

# указатель в начало файла
>>> fp.seek(0)
# 0

# начинаем читать построчно
>>> fp.readline()
# 'This is 1st line\n'
>>> fp.readline()
# 'This is 2nd line\n'
>>> fp.readline()
# 'This is 3rd line\n'
>>> fp.readline()
# ''
>>> fp.close()

Чтение файла при помощи цикла for.

Так как операция открытия файла open() возвращает поток, представляющий из себя генератор строк из файла, то можно итерироваться по нему при помощи функции next().

>>> fp = open('foo.txt', 'r')
>>> next(fp)
# 'This is 1st line\n'
>>> next(fp)
# 'This is 2nd line\n'
>>> next(fp)
# 'This is 3rd line\n'
>>> next(fp)
# Traceback (most recent call last):
#   File "<stdin>", line 1, in <module>
# StopIteration
>>> fp.close()

Так как цикл for/in делает то же самое, а именно при прохождении по последовательности вызывает next, следовательно, более просто, читать файл построчно, без ущерба для оперативной памяти можно следующим образом.

Внимание! Функцию open() предпочтительнее использовать с оператором контекстного менеджера with. При использовании оператора with файл закрывать не нужно:

>>> with open('foo.txt', 'r') as fp:
...     for n, line in enumerate(fp, 1):
...         # Обработка строки 'line'
...         line = line.rstrip('\n')
...         print(f"Вывод строки: {n}) - {line}")
... 
# Вывод строки: 1) - This is 1st line
# Вывод строки: 2) - This is 2nd line
# Вывод строки: 3) - This is 3rd line

Чтение строк файла кусками при помощи цикла while.

Возможно возникнет вопрос, зачем тогда вообще нужен метод файла file.readline(), если все так просто. Ответы просты. А если необходимо прочитать только одну строку? А если строка файла (до разделителя строки \n) очень длинная и не умещается в оперативной памяти, то тогда приходит на помощь метод файла file.readline(), т.к. он умеет разбивать строку файла на куски.

>>> fp = open('foo.txt', 'r')
# будем читать строку по 10 байт
>>> line = fp.readline(10)
>>> while line:
...     line = line.rstrip('\n')
...     print(line)
...     line = fp.readline(10)
... 
# This is 1s
# t line
# This is 2n
# d line
# This is 3r
# d line

>>> fp.close()