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的类方法和静态方法
Dec 13 Python
从Python程序中访问Java类的简单示例
Apr 20 Python
python检查字符串是否是正确ISBN的方法
Jul 11 Python
python僵尸进程产生的原因
Jul 21 Python
Python 多核并行计算的示例代码
Nov 07 Python
Python实现随机创建电话号码的方法示例
Dec 07 Python
Python3 串口接收与发送16进制数据包的实例
Jun 12 Python
python except异常处理之后不退出,解决异常继续执行的实现
Apr 25 Python
零基础学Python之前需要学c语言吗
Jul 21 Python
利用Python发送邮件或发带附件的邮件
Nov 12 Python
重构Python代码的六个实例
Nov 25 Python
tensorboard 可视化之localhost:6006不显示的解决方案
May 22 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
如何在PHP程序中防止盗链
2008/04/09 PHP
php合并数组array_merge函数运算符加号与的区别
2008/10/31 PHP
php网站被挂木马后的修复方法总结
2014/11/06 PHP
PHP图像处理类库及演示分享
2015/05/17 PHP
PHP标准类(stdclass)用法示例
2016/09/28 PHP
JavaScript 10件让人费解的事情
2010/02/15 Javascript
基于jquery实现的文字淡入淡出效果
2013/11/14 Javascript
jquery Tab效果和动态加载的简单实例
2013/12/11 Javascript
Jquery插件easyUi表单验证提交(示例代码)
2013/12/30 Javascript
javascript校验价格合法性实例(必须输入2位小数)
2014/05/05 Javascript
关于JavaScript中name的意义冲突示例介绍
2014/05/29 Javascript
js和jquery设置disabled属性为true使按钮失效
2014/08/07 Javascript
JavaScript基础知识学习笔记
2014/12/02 Javascript
JavaScript操作DOM元素的childNodes和children区别
2015/04/01 Javascript
浅谈jQuery中height与width
2015/07/06 Javascript
JavaScript数据存储 Cookie篇
2016/07/02 Javascript
AngularJS 中使用Swiper制作滚动图不能滑动的解决方法
2016/11/15 Javascript
EasyUI为Numberbox添加blur事件的方法
2017/03/05 Javascript
浅谈NodeJs之数据库异常处理
2017/10/25 NodeJs
jquery实现异步文件上传ajaxfileupload.js
2020/10/23 jQuery
[05:08]顺网杯ISS-DOTA2赛歌 少女偶像Lunar青春演绎
2013/12/05 DOTA
[48:05]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 VGJ.T vs VP
2018/03/31 DOTA
python 参数列表中的self 显式不等于冗余
2008/12/01 Python
在Python中使用lambda高效操作列表的教程
2015/04/24 Python
Tornado 多进程实现分析详解
2018/01/12 Python
Flask实现跨域请求的处理方法
2018/09/27 Python
Mac安装python3的方法步骤
2019/08/09 Python
Html5获取高德地图定位天气的方法
2019/12/26 HTML / CSS
软件设计的目标是什么
2016/12/04 面试题
公司活动策划方案
2014/01/13 职场文书
青年文明号复核材料
2014/02/11 职场文书
文明礼貌主题班会
2015/08/14 职场文书
保姆聘用合同
2015/09/21 职场文书
《蟋蟀的住宅》教学反思
2016/02/17 职场文书
小学教代会开幕词
2016/03/04 职场文书
Django程序的优化技巧
2021/04/29 Python