понедельник, 4 июня 2012 г.

Скрипт удаления старых файлов на Python


Вот понадобился скрипт, и оказалось хер найдешь в рунете (
Самый рабочий вариант позаимствован с http://www.grahamlyons.com/articles/view/using-python-to-delete-old-files-and-keep-newest-ones

Адаптация ниже:


#!/usr/bin/env python
#-*-coding:utf-8-*-

from operator import itemgetter, attrgetter
import glob, os, sys

def sort_files_by_last_modified(files):         #вывод отсортированых по дате изменения файлов
    fileData = {}
    for fname in files:
        fileData[fname] = os.stat(fname).st_mtime
    fileData = sorted(fileData.items(), key = itemgetter(1))
    return fileData

def delete_oldest_files(sorted_files, keep = 3):      #выводит список файлов по маске, оставляя 3 самых новых
    delete = len(sorted_files) - keep
    for x in range(0, delete):
        print "Удаляю: " + sorted_files[x][0]
        os.remove(sorted_files[x][0])

def print_usage():              #справка по использованию
    print """
Инструкция:
 1. delete_files '/path/to/files/pre_*.ext' №
    <№ - оставить свежих, по-умолчанию = 3>
    например delete_files '/home/root/files/*.jpg' 5 - оставить 5 свежих, остальные удалит
 2. delete_files -h вывод справки.
    """
if len(sys.argv) < 2 or sys.argv[1] == '-h':
    print_usage()
    sys.exit(1)
keep = 3
if len(sys.argv) > 2:
    keep = int(sys.argv[2])
file_paths = glob.glob(sys.argv[1])          #найти все файлы по маске в указанной директории
sorted_files = sort_files_by_last_modified(file_paths)     #отсортировать файлы по времени модификации
delete_oldest_files(sorted_files, keep)         #удалить старые файлы, новые оставить

Комментариев нет:

Отправить комментарий