Файлы · 17 из 24
Вернуть час на место
Дело о лишнем часе. Стас понял главное: в три часа ночи часы сервера откатились на час назад, и всё, что записано после, отстаёт ровно на час. Кофейне, регистратуре и школе нужен исправленный журнал. Подлинник трогать нельзя: его попросят как есть, если дойдёт до разбирательства.
Что сделать
Перепишите журнал в новый файл, прибавив час ко времени строк — начиная с той, где время пошло назад.
Что приходит
iz_fayla— путь к журналуv_fayl— путь к новому файлу; если такой уже есть, его надо переписать заново
Что вернуть
Сколько строк исправлено; в v_fayl — весь журнал, у исправленных строк — новое время.
Допишите функцию ispravit в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
В журнале четыре строки: две в 02:58 и 02:59, потом 02:00:10 и 02:01:00 — время пошло назад на третьей. В новый файл первые две строки ложатся как были, третья и четвёртая — с временем 03:00:10 и 03:01:00. Функция возвращает 2.
В проверке журнал записывается во временную папку, а после вызова тест читает, что получилось в новом файле.
import os, tempfile
papka = tempfile.mkdtemp()
iz = os.path.join(papka, "noch.log")
v = os.path.join(papka, "ispravlennyy.log")
with open(iz, "w", encoding="utf-8") as f:
f.write("2026-10-25 02:58:00 kassa: чек 1040\n"
"2026-10-25 02:59:30 shkola: синхронизация\n"
"2026-10-25 02:00:10 kassa: чек 1041\n"
"2026-10-25 02:01:00 registratura: запись\n")
(ispravit(iz, v), open(v, encoding="utf-8").read())
(2, '2026-10-25 02:58:00 kassa: чек 1040\n2026-10-25 02:59:30 shkola: синхронизация\n2026-10-25 03:00:10 kassa: чек 1041\n2026-10-25 03:01:00 registratura: запись\n')
Оба файла — в кодировке UTF-8. Каждая строка журнала начинается с даты и времени ровно в 19 знаков — 2026-10-25 02:00:10.
Строка, где время впервые стало меньше, чем в предыдущей, и все строки после неё получают время на час больше. Час прибавляется к моменту, а не к цифрам: 2026-10-25 23:30:00 становится 2026-10-26 00:30:00. Откат считается только первый; если его не было — файл копируется как есть, ответ 0.
Всё, что после времени, остаётся как было, вместе с переводом строки. Последняя строка без перевода остаётся без него. Пустой журнал — пустой файл и 0.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.