Ответсообщение недоступно
import os
lines = list()
with open(input(), 'rb') as f:
n = int(input())
f.seek(0, os.SEEK_END) # в конец файла прыгнули
if (cur_pos := f.tell()) != 0: # если пустой текст, ничего не делаем
block = 1024
buf = b'' # пустая строка байтов
while cur_pos > 0 and len(lines) <= n:
size = min(block, cur_pos)
cur_pos -= min(block, cur_pos) # отошли от конца на 1024 Кб или ушли сразу в начало
f.seek(cur_pos)
buf += f.read(size) # читает начиная от курсора до конца блока из size байтов
lines = buf.split(b'\n')
if buf.endswith(b'\n'):
lines = lines[:-1]
lines = lines[-n:] if len(lines) > n else lines
for line in lines:
# декодируем байты в символы, если будут порченные символы(обрезанные по байтовому представлению),
# заменим на знак вопроса в ромбике
print(line.decode('UTF-8', errors='replace'))