Файлы · 12 из 19
Старое — в архив
Журнал сервера пишется одним файлом, и раз в неделю Стас переносит из него всё старое в архив: старое дописывается в конец архива, а в журнале остаётся только свежее. Архив копится годами, поэтому его никогда не переписывают — только дописывают.
Что сделать
Перенесите из журнала в архив все записи старше заданной даты; в журнале оставьте остальные.
Что приходит
zhurnal— имя файла журнала; строка начинается с датыГГГГ-ММ-ДДarhiv— имя файла архива; его может ещё не бытьgranica— дата"ГГГГ-ММ-ДД": записи раньше неё — старые
Что вернуть
Сколько записей перенесено; старые — дописаны в конец архива по порядку, в журнале — только остальные.
Допишите функцию v_arhiv в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
В журнале записи за 28, 29 и 30 октября, граница — "2026-10-30". Записи за 28-е и 29-е дописываются в архив, в журнале остаётся одна — за 30-е; ответ 2.
with open("server-1.log", "w", encoding="utf-8") as f:
f.write("2026-10-28 09:00 INFO a\n2026-10-29 10:00 WARN b\n2026-10-30 11:00 INFO c\n")
n = v_arhiv("server-1.log", "arhiv-1.log", "2026-10-30")
with open("arhiv-1.log", encoding="utf-8") as f:
arhiv = f.read()
with open("server-1.log", encoding="utf-8") as f:
zhurnal = f.read()
(n, arhiv, zhurnal)
(2, '2026-10-28 09:00 INFO a\n2026-10-29 10:00 WARN b\n', '2026-10-30 11:00 INFO c\n')
Строка журнала начинается с даты ГГГГ-ММ-ДД, дальше — пробел и всё остальное. Запись старая, если её дата раньше границы; запись в саму дату границы остаётся в журнале.
Старые записи дописываются в конец архива — то, что в архиве уже было, остаётся. Если архива нет — он появляется. Журнал после вызова содержит только не перенесённые записи, в прежнем порядке. Строки переносятся как есть, с переводом строки. Файлы — в UTF-8.
Пустые строки журнала выбрасываются: они ни старые, ни новые.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.