Функция поиска в файле по номеру строки
Есть файл с некоторым кол-вом строк.
Нужно написать функцию, которая принимает путь к файлу и номер строки. Если в файле имеется строка с указанным номером, нужно вернуть эту строку. Если строки с этим номером в файле нет, тогда функция возвращает 1.
Мой код:
def return_num_string(path, number):
i = 0
with open(path) as file_object:
f = file_object.read()
for e in file_object:
i += 1
if number in e:
return number
else:
return 1
path = 'd:\\file Python\\plan.txt'
number = str(8)
return_num_string(path,number))
Возвращает None... Как добиться желаемого результата желательно самым примитивным образом, не прибегая к сложным конструкциям, без импорта библиотек?
Ответы (3 шт):
Автор решения: MaxU
→ Ссылка
если под вернуть эту строку подразумевается вернуть саму строку, то так:
def get_nth_line(filename, line_no):
with open(filename) as f:
for i, line in enumerate(f, 1):
if i == line_no:
return line
else:
return 1
если же нужно вернуть тот же номер строки:
def get_nth_line(filename, line_no):
with open(filename) as f:
for i, _ in enumerate(f, 1):
if i == line_no:
return line_no
else:
return 1
Автор решения: vadim vaduxa
→ Ссылка
from itertools import islice
def get_nth_line(filename, line_no):
try: return next(islice(open(filename), line_no, line_no+1))
except StopIteration: return 1
Автор решения: nchistov
→ Ссылка
Можно так:
def return_num_string(path, number):
with open(path) as f:
lines = f.readlines()
if number > len(lines) - 1:
return 1
return lines[number]
Для меня вполне красиво и лаконично.