Python 3.8.3. Функция "readline" читает не строку целиком, а некоторое количество символов с начала строки
Есть файл 'list.txt'. В нём несколько строк, вот таких:
abc
def
ghi
klm
Я хочу присвоить переменной значение, равное содержанию определённой строки. В коде ниже я хочу получить значение второй строки из файла 'list.txt'.
f = open('list.txt', 'r')
text = f.readline(2)
print(text)
Получаю следующее:
>>> text
'ab'
То есть, функция readline принимает в качестве аргумента не номер строки, а количество символов с начала первой строки. Я пробовал задавать число большее, чем символов в первой строке, но получал только полное значение первой строки. Почему так происходит?
Ответы (1 шт):
Описание метода readline(size=-1):
Read and return one line from the stream. If size is specified, at most size bytes will be read.
...
А чтобы получить определенную строку файла, как вариант, считать все и получить конкретную из списка строк:
f = open('list.txt')
lines = f.readlines()
print(lines[1])
Этот вариант подходит, для случаев, когда файл влезает в память
Если файл слишком большой, то можно считывать ища определенную строку, например:
num = 0
need_num = 2
while True:
num += 1
line = f.readline()
# Если конец файла
if not line:
break
if num == need_num:
print(line)
break