每日定时删除文件

# coding=utf-8
import os, time, sys, logging, datetime


__LOGFILE_NAME__ = "%s.log" % os.path.basename(sys.argv[0])

# 每天执行时间
cTime = "14:45"
# (1)清理应用日志内容文件夹列表
del_log_list = ['/root']
# (2)清理服务器指定目录内容文件夹列表
del_temp_list = ['/etc/nginx']
# (3)清理服务器备份的war包文件文件夹列表
dir_list = ['/usr/local/tomcat9']


def get_logger(name):
    formatter = logging.Formatter('%(levelname)s: %(asctime)s %(funcName)s(%(lineno)d) -- %(message)s',
                                  datefmt='%Y-%m-%d %H:%M:%S')
    logger = logging.getLogger(name)
    log_path = os.path.join(__LOGFILE_NAME__)
    fh = logging.FileHandler(log_path)
    fh.setFormatter(formatter)
    logger.addHandler(fh)
    ch = logging.StreamHandler()
    ch.setFormatter(formatter)
    logger.addHandler(ch)
    logger.setLevel(logging.DEBUG)
    return logger


class DelLogUtil():
    def __init__(self, __LOG):
        # 日志模块:
        self.LOG = __LOG

    def del_log(self, log_file_dir):
        # 获取当前时间
        today = datetime.datetime.now()
        # 计算偏移量,前7天
        offset = datetime.timedelta(days=-7)
        # 获取想要的日期的时间,即前7天时间
        re_date = (today + offset)
        # 前3天时间转换为时间戳
        re_date_unix = time.mktime(re_date.timetuple())

        ''' 删除目录中log日志文件'''
        try:
            if os.path.isdir(log_file_dir):
                for file in os.listdir(log_file_dir):
                    filename = os.path.join(log_file_dir, file)
                    if filename[-4:] == ".log":
                        if os.stat(filename).st_mtime <= re_date_unix:
                            os.remove(filename)
                            self.LOG.debug("Del {filename} Success!!! ".format(filename=filename))
        except Exception as e:
            print(e)

    def del_temp(self, temp_dir):
        try:
            for tdir in os.listdir(temp_dir):
                fulltdir = os.path.join(temp_dir, tdir)
                os.system("rm -rf %s" % fulltdir)
                self.LOG.debug("Del {filename} Success!!! ".format(filename=fulltdir))

        except Exception as e:
            # pass
            print(e)

    def del_war(self, file_dir):
        # 获取当前时间
        today = datetime.datetime.now()
        # 计算偏移量,前3天
        offset = datetime.timedelta(days=-3)
        # 获取想要的日期的时间,即前3天时间
        re_date = (today + offset)
        # 前3天时间转换为时间戳
        re_date_unix = time.mktime(re_date.timetuple())

        ''' 递归删除目录及其子目录, 子文件'''
        try:
            for item in os.listdir(file_dir):
                itempath = os.path.join(file_dir, item)
                if os.stat(itempath).st_mtime <= re_date_unix:
                    if os.path.isdir(itempath):
                        os.system("rm -rf %s" % itempath)
                        self.LOG.debug("Del {filename} Success!!! ".format(filename=itempath))
        except Exception as e:
            # pass
            print(e)


if __name__ == '__main__':
    LOG = get_logger(__name__)
    # print time.localtime()
    while True:
        try:
            # 当前时间
            nowTime = time.strftime('%H:%M', time.localtime())
            oTime = cTime.strip()
            nTime = nowTime.strip()
            if oTime == nTime:
                targetDir = ""  # Config.delPath().strip()
                df = DelLogUtil(LOG)
                nowTime = time.strftime('%H:%M', time.localtime())
                LOG.debug("==== DelLogStart: "
                          "StartTime:{nowTime} ====".format(nowTime=nowTime))
                # (1)清理应用日志内容
                for log_file_dir in del_log_list:
                    if os.path.isdir(log_file_dir):
                        df.del_log(log_file_dir)
                    else:
                        LOG.debug("Dir Not Exists: Dir:{ldir}".format(ldir=log_file_dir))

                # (2)清理服务器指定目录内容
                for temp_dir in del_temp_list:
                    if os.path.isdir(temp_dir):
                        df.del_temp(temp_dir)
                    else:
                        LOG.debug("Dir Not Exists: Dir:{ldir}".format(ldir=temp_dir))

                # (3)清理服务器备份的war包文件
                for file_dir in dir_list:
                    if os.path.isdir(file_dir):
                        df.del_war(file_dir)
                    else:
                        LOG.debug("Dir Not Exists: Dir:{ldir}".format(ldir=file_dir))

                endTime = time.strftime('%H:%M', time.localtime())
                LOG.debug("==== DelLogEnd: "
                          "EndTime:{endTime} ====".format(endTime=endTime))

            time.sleep(20)

        except Exception as e:
            # print e
            time.sleep(20)



posted @ 2022-04-25 15:14  yy9knsg  阅读(108)  评论(0)    收藏  举报