python 实现保存最新的三份文件,其余的都删掉


Posted in Python onDecember 22, 2019

我就废话不多说了,直接上代码吧!

"""
对于每天存储文件,文件数量过多,占用空间
采用保存最新的三个文件
"""
from airflow import DAG
from airflow.operators.python_operator import PythonOperator
from airflow.models import Variable
from sctetl.airflow.utils import dateutils
from datetime import datetime,timedelta
import logging
import os
import shutil
"""
base_dir = "/data"
data_dir = "/gather"
"gather下边存在不同的文件夹"
"/data/gather/test"
"test路径下有以下文件夹"
"20180812、20180813、20180814、20180815、20180816"
"""
 
base_dir = Variable.get("base_dir")
data_dir = Variable.get("data_dir")
keep = 3
 
default_arg = {
  "owner":"airflow",
  "depends_on_past":False,
  "start_date":dateutils.get_start_date_local(2018,8,27,18,5),
  "email":[''],
  "email_on_failure":False,
  "email_on_retry":False,
  "retries":1,
  "retry_delay":timedelta(minutes=5)
}
 
dag = DAG(dag_id="keep_three_day",default_args=default_arg,schedule_interval=dateutils.get_schedule_interval_local(18,5))
 
def keep_three_day():
  path = os.path.join(base_dir, data_dir)
  date_cates = os.listdir(path)
  for cate in date_cates:
    p = os.path.join(base_dir, data_dir, cate)
    if os.path.isdir(p):
      dir_names = os.listdir(p)
      dir_names.sort()
      for i in dir_names[:-keep]:
        logging.info("删除目录 {path}".format(path=os.path.join(p, i)))
        shutil.rmtree(os.path.join(p, i))
 
with dag:
  keep_three_file = PythonOperator(task_id="keep_three_file",python_callable=keep_three_day(),dag=dag)
 
keep_three_file

以上这篇python 实现保存最新的三份文件,其余的都删掉就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python struct.unpack
Sep 06 Python
python 生成不重复的随机数的代码
May 15 Python
python发送arp欺骗攻击代码分析
Jan 16 Python
Python简单调用MySQL存储过程并获得返回值的方法
Jul 20 Python
Python连接mysql数据库的正确姿势
Feb 03 Python
Python实现批量检测HTTP服务的状态
Oct 27 Python
python3之微信文章爬虫实例讲解
Jul 12 Python
实例详解Python模块decimal
Jun 26 Python
Python进程间通信 multiProcessing Queue队列实现详解
Sep 23 Python
python manage.py runserver流程解析
Nov 08 Python
40个你可能不知道的Python技巧附代码
Jan 29 Python
PyMongo 查询数据的实现
Jun 28 Python
python中的split()函数和os.path.split()函数使用详解
Dec 21 #Python
python 操作hive pyhs2方式
Dec 21 #Python
python 消费 kafka 数据教程
Dec 21 #Python
python kafka 多线程消费者&手动提交实例
Dec 21 #Python
Python序列类型的打包和解包实例
Dec 21 #Python
Python 使用threading+Queue实现线程池示例
Dec 21 #Python
Python CSV文件模块的使用案例分析
Dec 21 #Python
You might like
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
JQuery 学习笔记 element属性控制
2009/07/23 Javascript
extjs 列表框(multiselect)的动态添加列表项的方法
2009/07/31 Javascript
js parseInt("08")未指定进位制问题
2010/06/19 Javascript
js自动生成对象的属性示例代码
2013/10/28 Javascript
JS随机漂浮广告代码具体实例
2013/11/19 Javascript
基于jquery异步传输json数据格式实例代码
2013/11/23 Javascript
页面图片浮动左右滑动效果的简单实现案例
2014/02/10 Javascript
JavaScript控制按钮可用或不可用的方法
2015/04/03 Javascript
使用jQuery判断浏览器滚动条位置的方法
2016/05/30 Javascript
jQuery实现点击关注和取消功能
2017/07/03 jQuery
浅谈如何使用 webpack 优化资源
2017/10/20 Javascript
关于vue面试题汇总
2018/03/20 Javascript
如何用input标签和jquery实现多图片的上传和回显功能
2018/05/16 jQuery
浅谈Redux中间件的实践
2018/07/27 Javascript
vue 中基于html5 drag drap的拖放效果案例分析
2018/11/01 Javascript
对layer弹出框中icon数字参数的说明介绍
2019/09/04 Javascript
微信内置浏览器图片查看器的代码实例
2019/10/08 Javascript
在Webpack中用url-loader处理图片和字体的问题
2020/04/28 Javascript
如何在vue中使用百度地图添加自定义覆盖物(水波纹)
2020/11/03 Javascript
[02:45]DOTA2英雄敌法师基础教程
2013/11/25 DOTA
[52:57]2014 DOTA2国际邀请赛中国区预选赛 LGD-CDEC VS HGT
2014/05/21 DOTA
Python字符遍历的艺术
2008/09/06 Python
java直接调用python脚本的例子
2014/02/16 Python
Python合并多个装饰器小技巧
2015/04/28 Python
python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
2017/02/14 Python
详解 Python 读写XML文件的实例
2017/08/02 Python
Python使用Opencv实现图像特征检测与匹配的方法
2019/10/30 Python
使用Puppeteer爬取微信文章的实现
2020/02/11 Python
django rest framework使用django-filter用法
2020/07/15 Python
如何通过python实现IOU计算代码实例
2020/11/02 Python
银行会计业务的个人自我评价
2013/11/02 职场文书
《歌唱二小放牛郎》教学反思
2014/04/19 职场文书
导游词之山海关
2019/12/10 职场文书
python内置进制转换函数的操作
2021/06/02 Python
在Java中Collection的一些常用方法总结
2021/06/13 Java/Android