Архивирую я базы 1с вот таким вот батником
"C:\Program Files\WinRAR\Rar.exe" a -ag -r -dh -x*.cdx \\Operator\bkp\server\SVT- d:\SVT\
который создает архивы типа такого "SVT-20070919160000.rar" несколько раз в день. Ключ -dh позволяет архивировать базу, даже если с ней работают. Очень удобно, рекомендую. Но речь не о том. Архивов создается много и через определенное время их станет очень много и... это будет не очень хорошо. Удалять руками - лень, да и глупо. Встала задача, чтобы были только свежие три архива, а остальные удалялись бы. Искал я в инете всякие батники, vbs, wsh, которые удаляют старые файлы - такой бред, не понравились совершенно. Естественно на помощь приходит Python :) Вот что из этого получилось:
# -*- coding: cp1251 -*-
import os
import operator
import re
#регулярное выражение для поиска архивов rar
pattern = re.compile(r"rar")
#директория где мы ищем старые архивы
dir = '\\\\operator\\bkp\\server\\'
#создаем кортеж из файлов с временем их создания
files_with_time = []
for each in os.listdir(dir):
path_to_file = dir+str(each)
time_of_file = os.stat(path_to_file).st_ctime
#берем только архивы rar
if pattern.findall(each): files_with_time = \
files_with_time + [(path_to_file, time_of_file)]
#сортируем полученный кортеж
files_with_time.sort(key=operator.itemgetter(1), \
reverse=True)
#три свежих файла оставляем - остальное удаляем
for each in files_with_time[3:]: os.unlink(each[0])