练习2:清理指定天数前的日志

需求:测试机器的磁盘太小,经常报警,要写一个清理日志的脚本,每次运行就把三天之前的日志删除,日志名的格式是xxx-20170623.log

步骤:
# 1、获取目录下的所有文件名
# 2、将以.log结尾的文件前面的日期取出来
# 3、判断,如果是三天前的删除

import os,time,datetime

def strtotimestamp(str=None,format='%Y-%m-%d'):
    if str:
        tp = time.strptime(str,format)  #Parse a string to a time tuple according to a format specification.
        res = time.mktime(tp)
        #Convert a time tuple in local time to seconds since the Epoch(1970-01-01 00:00:00 UTC)
        #时间元组转换为时间戳
    else:
        res = time.time() #Return the current time in seconds since the Epoch获取当前时间戳
        #不做处理,时间戳为 float 类型
    return int(res)

def delbeforedaysfile(filepath,duration):
    duration_new = duration.__neg__()  #取负数
    day_delduration = datetime.date.today() + datetime.timedelta(duration_new)
    #print(day_delduration) 2018-06-10
    #day_delduration2= datetime.datetime.now() +datetime.timedelta(duration_new)
    #print(day_delduration2) 2018-06-10 18:32:01.653400
    #abspath,dir,file = os.walk(filepath)
    for abspath,dir,file in os.walk(filepath):
        for filename in file:
            if filename.split('.')[1] == 'log': #后缀不为.log 的文件不处理
                filename_del = os.path.join(abspath, filename)
                front_filename = filename.split('.')[0]
                date_filename = front_filename.split('_')[2]
                #日志文件的格式为Parking_error_20180614.log,所以format的格式需要传入,不使用默认
                if strtotimestamp(str(day_delduration))> strtotimestamp(str=date_filename,format='%Y%m%d'):
                    os.remove(filename_del)
                    print('删除%d天前的文件%s成功' %(duration, filename))

 

转载于:https://www.cnblogs.com/liuyanerfly/p/9184090.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值