Запутанный способ работы readline ()

#python #python-3.x #file-handling #readline

#python #python-3.x #обработка файлов #readline

Вопрос:

Я не понимаю, как infile.readline() функция работает в моем коде.

ПРИМЕЧАНИЕ: Используется интерпретатор Python версии v2.7.15 (64-разрядный).

 infile = open(r'C:UserspritishDesktoptest_file_for_py.txt', 'r')
print infile.read(5)
print infile.read(5)
print infile.readline(2)
  

Где test_file_for_py.txt содержатся эти строки:

 This is line 1
This is line 2
This is line 3
This is line 4
This is line 5
This is line 6
This is line 7
This is line 8
  

В приведенном выше #TEST КОДЕ 1 , print infile.readline(2) выдает результат ne, который соответствует ожиданиям:

 >>> infile = open(r'C:UserspritishDesktoptest_file_for_py.txt', 'r')
>>> print infile.read(5)
This
>>> print infile.read(5)
is li
>>> print infile.readline(2)
ne
>>>
  

Теперь вот в чем загвоздка, он продолжает выдавать тот же результат, что и ниже, независимо от того, какое значение (больше 4) Я передаю в качестве аргумента infile.readline() .

 >>> infile = open(r'C:UserspritishDesktoptest_file_for_py.txt', 'r')
>>> print infile.read(5)
This
>>> print infile.read(5)
is li
>>> print infile.readline(5) # NOTE BELOW output
ne 1

>>>
>>> infile = open(r'C:UserspritishDesktoptest_file_for_py.txt', 'r')
>>> print infile.read(5)
This
>>> print infile.read(5)
is li
>>> print infile.readline(8) #value is changed to 8 now , but still o/p same as previous(as like 5)
ne 1

>>>
  

Кто-нибудь может, пожалуйста, объяснить, почему infile.readline() не возвращает символы из следующей строки, даже если я меняю infile.readline() аргумент на любое значение (> 5)?

Комментарии:

1. readline останавливается при попадании на n символ. readline , как следует из названия, просто должен читать текущую строку.

Ответ №1:

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

Смотрите документацию.