定时删除django项目中media目录下某一文件夹下所有文件

写了一个导出pdf文件的功能,但是采用的先生成在服务器然后下载的方式实现的。存储量有多庞大可想而知,所以写了一个定时删除这些文件的脚本。

直接上代码:

import os
import datetime
import threading
from MapI.settings import MEDIA_ROOT


def get_time_difference():
    '''
    获取当前时间距离明天凌晨3点时间
    '''
    # 获取现在时间
    now_time = datetime.datetime.now()
    # 获取明天时间
    next_time = now_time + datetime.timedelta(days=+1)
    next_year = next_time.date().year
    next_month = next_time.date().month
    next_day = next_time.date().day
    # 获取明天3点时间
    next_time = datetime.datetime.strptime(str(next_year) + "-" + str(next_month) + "-" + str(next_day) + " 03:00:00",
                                           "%Y-%m-%d %H:%M:%S")

    # 获取距离明天3点时间,单位为秒
    timer_start_time = (next_time - now_time).total_seconds()
    return timer_start_time


def del_dir_all():
    """
    删除路径下所有文件
    :param path:
    :return:
    """
    try:
        path = '{}/export_temporary/'.format(MEDIA_ROOT)
        x = os.listdir(path)  # 获取当前路径下所有文件
        for i in x:
            new_dir = os.path.join(path, i)
            if not os.path.isdir(new_dir):
                os.remove(new_dir)
    except Exception as e:
        raise e
    finally:
        # 递归调用,每天凌晨3点清理文件
        timer = threading.Timer(get_time_difference(), del_dir_all)
        timer.start()


if __name__ == '__main__':
    # 定时器,参数为(多少时间后执行,单位为秒,执行的方法)
    timer = threading.Timer(get_time_difference(), del_dir_all)
    timer.start()

 

你可能感兴趣的:(python3,python)