Функция поиска в файле по номеру строки

Есть файл с некоторым кол-вом строк.

Нужно написать функцию, которая принимает путь к файлу и номер строки. Если в файле имеется строка с указанным номером, нужно вернуть эту строку. Если строки с этим номером в файле нет, тогда функция возвращает 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]

Для меня вполне красиво и лаконично.

→ Ссылка