美文网首页
定时清除某个目录的所有文件,但不删除其嵌套的目录

定时清除某个目录的所有文件,但不删除其嵌套的目录

作者: 洛奇lodge | 来源:发表于2019-04-28 17:54 被阅读0次

    第一种方式,使用python语言,做成接口形式,上传文件时,就去删除过期的文件

    def del_file(dir, frontHours):
       """
       删除过期文件
      :param dir: 要删除文件的目录路径
      :param frontDay: 指定当前时间的前几个小时
      :return:
      """
       if dir.endswith('/'):
           dir = dir[:-1]
       # 现在时间
       starttime = datetime.now()
       # 过期时间
       expire_time = str(starttime + timedelta(hours=-frontHours)).split('.')[0]
       for root, dir_list, file_list in os.walk(dir):
           for i in file_list:
               file_path = root + '/' +i
               # 最后一次修改的时间
               last1 = os.stat(file_path).st_mtime
               # 将时间戳格式化成时间格式的字符串
              filetime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(last1))
              # 小于过期时间的文件都删除
              if expire_time > filetime:
                  os.remove(file_path)
    

    第两种方式:使用shell语言,在LIUNX系统设置定时任务

    1、准备一个shell脚本,找出指定的文件并删除
     #!/bin/sh
     # 定时将10个小时之前的文件删除
     # 格式:find 指定目录 -mmin +分钟  -type  文件类型 -exec 命令 {} \;
     find /home/python/Desktop/test/ -mmin +600 -type f -exec rm -f {} \;
    
    2、设置定时任务,定时执行shell脚本
    2.1 查看liunx系统有哪些定时任务在执行: crontab -l
    2.2 输入crontab -e, 首次进入会提示选择编辑器,选用3
    • 如果由于误操作选择不适合的编辑器,可以修改下面全局变量转换为vim编辑器

      export EDITOR=vim
      
    2.3 设置定时任务
      # 在liunx系统设置定时, 每天凌晨执行一次
      0 0 * * * bash /home/python/Desktop/upload_download/clear_file.sh
    
    2.3 删除定时:crontab -r
    2.4 时间格式
    • 语法:* * * * * command
    • 解释: 分 时 日 月 周 命令
    • 第1列表示分钟1~59 每分钟用*或者 */1表示
    • 第2列表示小时1~23(0表示0点)
    • 第3列表示日期1~31
    • 第4列表示月份1~12
    • 第5列标识号星期0~6(0表示星期天)
    • 第6列要运行的命令

    相关文章

      网友评论

          本文标题:定时清除某个目录的所有文件,但不删除其嵌套的目录

          本文链接:https://www.haomeiwen.com/subject/vladnqtx.html