1 '''
2 写一个删除日志的程序,删除5天前或为空的日志,不包括当天的
3 1.删除5天前的日志文件
4 2.删除为空的日志文件
5 '''
6 import os
7 import time
8
9 def delete_logs_file():#清理日志
10 for cur_dir,dirs,files in os.walk('logs'):
11 print(cur_dir,dirs,files)
12 if files:#当文件列表不为空是,开始删除
13 for file_name in files:
14 file_time = get_filename_time(file_name)#获取文件名的时间
15 is_delete_file = check_time(file_time)
16 file_path = os.path.join(cur_dir,file_name)
17 if is_delete_file:
18 os.remove(file_path)
19 else:
20 if check_time_is_today(file_time):#文件时间不是今天
21 if check_file_content(file_path):#文件为空,可以删除
22 print('文件为空',file_path)
23 os.remove(file_path)
24
25
26
27 def get_filename_time(file_name):#获取文件名中的时间
28 if file_name:
29 temp = file_name.split('_')
30 file_name_time = temp[1][:10]
31 return file_name_time
32
33 def check_time_is_today(time_str):#判断时间是否为当天
34 today = time.strftime('%Y-%m-%d')#获取当天的格式化时间
35 if today == time_str:
36 return False
37 else:
38 return True
39
40 def check_time(time_str):#判断时间是否为5天前的时间
41 now_time = time.time()#获取当前的时间戳
42 day_ago = now_time-5*24*60*60#获取5天前的时间戳
43 temp_time = time.strptime(time_str,'%Y-%m-%d')#获取传入时间的元组
44 time_zone = time.mktime(temp_time)
45 if time_zone <= day_ago:
46 return True
47 else:
48 return False
49
50 def delete_file(file_path):#删除指定文件
51 os.remove(file_path)
52
53 def check_file_content(file_path):#判断文件是否为空
54 file_size = os.path.getsize(file_path)
55 if file_size == 0:
56 return True
57 else:
58 return False
59
60 delete_logs_file()