Ошибка в коде list index out of range

В чем может быть проблема? Нужно выводить последние строки с файла (Снизу в верх) Буду благодарен за решение данной проблемы, я просто чайник и пишу для теста это)

Код:

def famloglast(peer_id, user_id, family, strok):
    if family in familyall:
        if family == 'test1':
            if user_id in DostupID:
                textlog = Test1_FileLog.read()
                logstroki = textlog.split('\n')
                logstroki.reverse()
                strok = int(strok)
                i = 1
                logoutput = []
                for i in range(strok):
                    logoutput.append(logstroki[i]) #Это 122 строка
                    i=i-1
                if i == 1:
                    logoutput.reverse()
                    output = '\n'.join(logoutput)
                    send_message(peer_id, output)
famloglast(1234, 1234, test1, 10)

Ошибка:

line 122, in famloglast
    logoutput.append(logstroki[i])
IndexError: list index out of range

Ответы (2 шт):

Автор решения: Сергей
  1. В вашем logstroki количество символов оказывается меньше, чем требует переменная strok. В результате вы выходите за границу и вам выдается ошибка (так как кода исполняемого вы не привели, то точно мне не проверить, но должно это быть причиной).

  2. Обратите также внимание, что i=1 пропадает зря, так как for i in range(strok): устанавливает i в 0. И i=i-1 тоже не к месту, там уже итератор управляет этим i. Это в любом случае нужно исправлять. Решите, что вы хотите, так как итератор делает +1 на каждом шаге, а вы пытаетесь делать -1. Срабатывает это только на самом последнем шаге. Фактически после цикла ваш i всегда будет равен strok - 2. Так что i == 1 сработает только при strok = 3.

→ Ссылка
Автор решения: SergFSM

по поводу ошибки вам уже подсказали, а на счет получения последних строк, вы можете заменить свой цикл на это, и реверс делать не надо:

output = '\n'.join(logstroki[-strok:])
→ Ссылка