Файлы · 11 из 12
Ротация журнала
Задействованы также: Списки
Журнал не должен расти бесконечно. Когда он перерастает предел, его переименовывают в «.1», прежний «.1» — в «.2», и так до предела хранения; самый старый удаляется.
Что сделать
Не дайте журналу расти бесконечно — переросший предел сдвиньте в копии.
Что приходит
imya— имя журналаpredel— предельный размер в байтахhranit— сколько копий хранить
Что вернуть
Сколько файлов сдвинуто вместе с самим журналом; журнала нет или он не больше predel — 0, и ничего не трогается.
Допишите функцию povernut в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
Журнал app.log в 100 байт при пределе 50: он становится app.log.1, прежний app.log.1 — app.log.2 и так далее, на месте журнала появляется пустой app.log. Копия с номером больше hranit удаляется. Копий раньше не было — сдвинут один файл: ответ 1.
with open("app.log", "w", encoding="utf-8") as f:
f.write("x" * 100)
itog = povernut("app.log", 50, 3)
import os
est = (os.path.exists("app.log"), os.path.exists("app.log.1"),
os.path.getsize("app.log"))
(itog, est)
(1, (True, True, 0))
Функция принимает имя файла, предельный размер в байтах (целое) и число хранимых копий (целое больше нуля). Если файла нет или он не больше предела — ничего не делает и возвращает 0. Иначе сдвигает копии: «имя.N-1» становится «имя.N» и так далее, сам файл становится «имя.1», а на его месте создаётся пустой. Копия с номером больше числа хранимых удаляется. Возвращает число сдвинутых файлов, включая сам журнал.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.