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)