python 遍历删除日志

#! /usr/bin/python2.6
#-*- encoding:UTF-8 -*-

import os
import os.path
import time

root_dir = os.getcwd()
seperator = os.sep

max_used_space = 60*1024*1024*1024 #当使用的硬盘空间大于该值的时候启动删除60G
min_left_space = 20*1024*1024*1024 #删除保存的硬盘空间20G
max_remain_time = 7*24*60*60 #文件最大允许保存的时间为一周时间

file_list = []

def show_dirinfo(root_dir):
for parent, dirnames, filenames in os.walk(root_dir):
if len(filenames) > 0: #当前访问的文件夹下有文件存在
show_fileinfo(parent, filenames)

if len(dirnames) > 0: #当前访问的文件夹下还有子文件夹,递归访问
for dirname in dirnames:
if parent.endswith(seperator):
show_dirinfo(parent + dirname)
else:
show_dirinfo(parent + seperator + dirname)
del dirnames[0] #该文件夹已经访问过了,需要删除

if (len(filenames) == 0) and (len(dirnames) == 0): #空文件夹就删除
try:
os.rmdir(parent) ###############删除空文件夹#################
except Exception as e:
pass

def show_fileinfo(parent_dir, filenames):

for filename in filenames: #输出文件信息
full_path_name = os.path.join(parent_dir, filename)
try:
statinfo=os.stat(full_path_name)
except Exception as e:
return

file_size = statinfo.st_size
file_midifytime = statinfo.st_mtime

temp_dict = dict(zip(['filename', 'filesize', 'filetime'], [full_path_name, file_size, file_midifytime]))
#if file_size > 512*1024*1024:
save_file(temp_dict)

def save_file(temp_dict):
global file_list

insert_succ = 0 #判断是否插入成功

new_time = temp_dict['filetime']

if len(file_list) == 0:
file_list.append(temp_dict)
else:
for i in range(len(file_list)):
old_time = file_list[i]['filetime']
if new_time < old_time: #时间越久数值越小,按照时间排序,时间值越小也就是越久的文件排在最前面,删除的时候优先删除
file_list.insert(i, temp_dict)
insert_succ = 1
break

if insert_succ == 0: #没有插入成功表示当前的文件是新文件,需要放在最后面
file_list.append(temp_dict)

def delete_file():
global file_list
global max_used_space
global min_left_space
global max_remain_time

file_count = len(file_list)
file_index = 0

now_time = time.time()

while (file_index < (file_count - 1)):
file_midifytime = file_list[file_index]['filetime']
full_path_name = file_list[file_index]['filename']

if (now_time - file_midifytime) >= max_remain_time: #该文件的时间已经超过一周了,需要删除
try:
os.remove(full_path_name) #####################删除文件了#########################
del file_list[file_index]

file_count = file_count - 1
file_index = file_index - 1
except Exception as e:
return

file_index = file_index + 1
else:
break

total_file_size = get_total_file_size() #获得总的文件大小信息

if total_file_size > max_used_space: #如果大于上限就开始执行删除操作
while (total_file_size > min_left_space): #删除保留空间大小
delete_file_name = file_list[0]['filename'] #从头开始删除,因为已经排序了
delete_file_size = file_list[0]['filesize']
os.remove(delete_file_name) #执行删除操作
del file_list[0] #从文件列表中删除
total_file_size = total_file_size - delete_file_size #重新计算总的文件大小

def get_total_file_size(): #计算整个文件的大小
global file_list

total_size = 0.0
for i in range(len(file_list)):
total_size = total_size + file_list[i]['filesize']

try:
show_dirinfo(root_dir)
print(str(file_list))
#delete_file()
except Exception as e:
print(e)

 

  1 #! /usr/bin/python2.6
  2 #-*- encoding:UTF-8 -*-
  3 
  4 import os
  5 import os.path
  6 import time
  7 
  8 root_dir = os.getcwd()
  9 seperator = os.sep
 10 
 11 max_used_space = 60*1024*1024*1024    #当使用的硬盘空间大于该值的时候启动删除60G
 12 min_left_space = 20*1024*1024*1024    #删除保存的硬盘空间20G
 13 max_remain_time = 7*24*60*60    #文件最大允许保存的时间为一周时间
 14 
 15 file_list = []
 16 
 17 def show_dirinfo(root_dir):
 18     for parent, dirnames, filenames in os.walk(root_dir):
 19         if len(filenames) > 0:    #当前访问的文件夹下有文件存在
 20             show_fileinfo(parent, filenames)
 21         
 22         if len(dirnames) > 0:    #当前访问的文件夹下还有子文件夹,递归访问
 23             for dirname in dirnames:
 24                 if parent.endswith(seperator):
 25                     show_dirinfo(parent + dirname)
 26                 else:
 27                     show_dirinfo(parent + seperator + dirname)
 28             
 29                del dirnames[0]    #该文件夹已经访问过了,需要删除
 30         
 31         if (len(filenames) == 0) and (len(dirnames) == 0): #空文件夹就删除
 32             try:
 33                 os.rmdir(parent)    ###############删除空文件夹#################
 34             except Exception as e:
 35                 pass
 36 
 37 def show_fileinfo(parent_dir, filenames):
 38     for filename in filenames: #输出文件信息
 39         full_path_name = os.path.join(parent_dir, filename)
 40         
 41         try:
 42             statinfo=os.stat(full_path_name)
 43         except Exception as e:
 44             return
 45         
 46         file_size = statinfo.st_size
 47         file_midifytime = statinfo.st_mtime
 48         
 49         temp_dict = dict(zip(['filename', 'filesize', 'filetime'], [full_path_name, file_size, file_midifytime]))
 50         #if file_size > 512*1024*1024:
 51         save_file(temp_dict)
 52 
 53 def save_file(temp_dict):
 54     global file_list
 55     
 56     insert_succ = 0    #判断是否插入成功
 57     
 58     new_time = temp_dict['filetime']
 59     
 60     if len(file_list) == 0:
 61         file_list.append(temp_dict)
 62     else:
 63         for i in range(len(file_list)):
 64             old_time = file_list[i]['filetime']
 65             if new_time < old_time:    #时间越久数值越小,按照时间排序,时间值越小也就是越久的文件排在最前面,删除的时候优先删除
 66                 file_list.insert(i, temp_dict)
 67                 insert_succ = 1
 68                 break
 69     
 70             if insert_succ == 0:    #没有插入成功表示当前的文件是新文件,需要放在最后面
 71                 file_list.append(temp_dict)
 72 
 73 def delete_file():
 74     global file_list
 75     global max_used_space
 76     global min_left_space
 77     global max_remain_time
 78     
 79     file_count = len(file_list)
 80     file_index = 0
 81     
 82     now_time = time.time()
 83     
 84     while (file_index < (file_count - 1)):
 85         file_midifytime = file_list[file_index]['filetime']
 86         full_path_name = file_list[file_index]['filename']
 87         
 88         if (now_time - file_midifytime) >= max_remain_time:    #该文件的时间已经超过一周了,需要删除
 89             try:
 90                 os.remove(full_path_name)    #####################删除文件了#########################
 91                 del file_list[file_index]
 92                 
 93                 file_count = file_count - 1
 94                 file_index = file_index - 1
 95             except Exception as e:
 96                 return
 97             
 98             file_index = file_index + 1
 99         else:
100             break
101     
102     total_file_size = get_total_file_size()    #获得总的文件大小信息
103     
104     if total_file_size > max_used_space:    #如果大于上限就开始执行删除操作
105         while (total_file_size > min_left_space):    #删除保留空间大小
106             delete_file_name = file_list[0]['filename']    #从头开始删除,因为已经排序了
107             delete_file_size = file_list[0]['filesize']
108             os.remove(delete_file_name)    #执行删除操作
109             del file_list[0]    #从文件列表中删除
110             total_file_size = total_file_size - delete_file_size    #重新计算总的文件大小
111 
112 def get_total_file_size():    #计算整个文件的大小
113     global file_list
114     
115     total_size = 0.0
116     for i in range(len(file_list)):
117         total_size = total_size + file_list[i]['filesize']
118     
119     try:
120         show_dirinfo(root_dir)
121         print(str(file_list))
122         #delete_file()
123     except Exception as e:
124         print(e)

 

posted on 2015-06-09 14:27  帅胡  阅读(598)  评论(0编辑  收藏  举报

导航