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 相关文章推荐
pyv8学习python和javascript变量进行交互
Dec 04 Python
python使用PyFetion来发送短信的例子
Apr 22 Python
Python实现网站文件的全备份和差异备份
Nov 30 Python
Python抓取框架 Scrapy的架构
Aug 12 Python
python3+opencv3识别图片中的物体并截取的方法
Dec 05 Python
Python文件读写常见用法总结
Feb 22 Python
Python远程视频监控程序的实例代码
May 05 Python
在Python中获取操作系统的进程信息
Aug 27 Python
python使用 cx_Oracle 模块进行查询操作示例
Nov 28 Python
Python 将json序列化后的字符串转换成字典(推荐)
Jan 06 Python
Spark处理数据排序问题如何避免OOM
May 21 Python
python实现扫雷游戏的示例
Oct 20 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 图片水印类代码
2012/08/27 PHP
FastCGI 进程意外退出造成500错误
2015/07/26 PHP
PHP在线调试执行的实现方法(附demo源码)
2016/04/28 PHP
Thinkphp单字母函数使用指南
2016/05/08 PHP
PHP实现websocket通信的方法示例
2018/08/28 PHP
html数组字符串拼接的最快方法
2009/09/16 Javascript
基于jquery的合并table相同单元格的插件(精简版)
2011/04/05 Javascript
通过action传过来的值在option获取进行验证的方法
2013/11/14 Javascript
网站内容禁止复制和粘贴、另存为的js代码
2014/02/26 Javascript
使用JavaScript实现网页版Pongo设计思路及源代码分享
2014/06/16 Javascript
浅谈JavaScript 框架分类
2014/11/10 Javascript
javascript实现根据iphone屏幕方向调用不同样式表的方法
2015/07/13 Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
2016/09/28 Javascript
PHP获取当前页面完整URL的方法
2016/12/02 Javascript
JavaScript判断变量名是否存在数组中的实例
2017/12/28 Javascript
nodejs之koa2请求示例(GET,POST)
2018/08/07 NodeJs
JavaScript代码调试方法实例小结
2019/01/05 Javascript
[00:06]Yes,it worked!小卡尔成功穿越时空加入战场!
2019/07/20 DOTA
Python 文本文件内容批量抽取实例
2018/12/10 Python
python安装pywin32clipboard的操作方法
2019/01/24 Python
Django框架之DRF 基于mixins来封装的视图详解
2019/07/23 Python
使用WingPro 7 设置Python路径的方法
2019/07/24 Python
Python中list循环遍历删除数据的正确方法
2019/09/02 Python
Python利用matplotlib绘制约数个数统计图示例
2019/11/26 Python
django自定义模板标签过程解析
2019/12/14 Python
python 实现"神经衰弱"翻牌游戏
2020/11/09 Python
财务会计毕业生自荐信
2013/11/02 职场文书
路政管理专业推荐信
2013/11/11 职场文书
实习教师自我鉴定
2013/12/09 职场文书
直接有效的自我评价
2014/01/11 职场文书
关于建议书的格式范文
2014/05/20 职场文书
农村党员一句话承诺
2014/05/30 职场文书
教室布置标语
2014/06/26 职场文书
离开雷锋的日子观后感
2015/06/09 职场文书
MySQL外键约束(FOREIGN KEY)案例讲解
2021/08/23 MySQL
前端JavaScript大管家 package.json
2021/11/02 Javascript