Файлы · 11 из 14
Ошибка и её хвост
Когда программа на сервере падает, в журнал пишется не одна строка, а целая трассировка: строка с ERROR, а под ней — строки с отступом, где именно упало. Начальство просит у Стаса сводку: когда была ошибка, что в ней написано и насколько длинный у неё хвост. По длине трассировки Стас сразу видит, падение это или просто ворчание.
Что сделать
Соберите из журнала все ошибки: когда, что написано и сколько строк трассировки под каждой.
Что приходит
put— путь к файлу журнала в UTF-8
Что вернуть
Список троек (когда, текст, строк трассировки) в порядке журнала; когда — дата и время через пробел.
Допишите функцию oshibki_s_trassirovkoy в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
В журнале ошибка «Нет связи с базой» в 03:15:22, под ней две строки с отступом, потом запись INFO. Ответ — [("2026-10-28 03:15:22", "Нет связи с базой", 2)].
with open("noch.log", "w", encoding="utf-8") as f:
f.write("2026-10-28 03:15:22 ERROR Нет связи с базой\n"
" File \"server.py\", line 12\n"
" ConnectionError\n"
"2026-10-28 03:16:00 INFO Связь восстановлена\n")
oshibki_s_trassirovkoy("noch.log")
[('2026-10-28 03:15:22', 'Нет связи с базой', 2)]
Запись журнала начинается строкой без отступа: дата, время, уровень и текст через пробел, например 2026-10-28 03:15:22 ERROR Нет связи с базой. Текст бывает из нескольких слов; пробелы внутри него сохраняются, по краям — нет. Текст у записи есть всегда.
Строка, которая начинается с пробела или табуляции, продолжает предыдущую запись — это трассировка. Пустые строки и строки из одних пробелов не продолжают ничего и просто пропускаются.
В ответ идут только записи уровня ERROR (заглавными, ровно так): дата и время через пробел, текст и сколько строк трассировки под записью. Трассировка под записью другого уровня не засчитывается никому, как и строки с отступом в начале файла, до первой записи.
Последняя строка файла может быть без перевода строки. Пустой файл — пустой список.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.