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标准日志模块logging的使用方法
Nov 01 Python
tensorflow中next_batch的具体使用
Feb 02 Python
python实现微信自动回复及批量添加好友功能
Jul 03 Python
python打印9宫格、25宫格等奇数格 满足横竖斜相加和相等
Jul 19 Python
python 实现矩阵填充0的例子
Nov 29 Python
python基于socket函数实现端口扫描
May 28 Python
基于logstash实现日志文件同步elasticsearch
Aug 06 Python
python在linux环境下安装skimage的示例代码
Oct 14 Python
利用python 下载bilibili视频
Nov 13 Python
python 三种方法实现对Excel表格的读写
Nov 19 Python
Python实现学生管理系统并生成exe可执行文件详解流程
Jan 22 Python
Python学习之迭代器详解
Apr 01 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
默默简单的写了一个模板引擎
2007/01/02 PHP
php实现的生成排列算法示例
2019/07/25 PHP
使用laravel的Eloquent模型如何获取数据库的指定列
2019/10/17 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
2020/08/17 PHP
在textarea文本域中显示HTML代码的方法
2007/03/06 Javascript
Javascript 布尔型分析
2008/12/22 Javascript
javascript里模拟sleep(两种实现方式)
2013/01/25 Javascript
jquery.autocomplete修改实现键盘上下键自动填充示例
2013/11/19 Javascript
JQuery 实现在同一页面锚点链接之间的平滑滚动
2014/10/29 Javascript
jQuery标签编辑插件Tagit使用指南
2015/04/21 Javascript
项目实践一图片上传之form表单还是base64前端图片压缩(前端图片压缩)
2016/07/28 Javascript
Canvas + JavaScript 制作图片粒子效果
2017/02/08 Javascript
jQuery实现文章图片弹出放大效果
2017/04/06 jQuery
JQuery实现定时刷新功能代码
2017/05/09 jQuery
vue 文件目录结构详解
2017/11/24 Javascript
微信小程序模板消息推送的两种实现方式
2019/08/27 Javascript
layui lay-verify form表单自定义验证规则详解
2019/09/18 Javascript
[02:04]2014DOTA2国际邀请赛 DK一个时代的落幕
2014/07/21 DOTA
学习python之编写简单乘法口诀表实现代码
2016/02/27 Python
Python实现在tkinter中使用matplotlib绘制图形的方法示例
2018/01/18 Python
Python实现的基于优先等级分配糖果问题算法示例
2018/04/25 Python
Python退火算法在高次方程的应用
2018/07/26 Python
Django之模板层的实现代码
2019/09/09 Python
tensorflow使用指定gpu的方法
2020/02/04 Python
在 Linux/Mac 下为Python函数添加超时时间的方法
2020/02/20 Python
Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例
2020/03/18 Python
解决windows下python3使用multiprocessing.Pool出现的问题
2020/04/08 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
2020/10/22 Python
HTML5 history新特性pushState、replaceState及两者的区别
2015/12/26 HTML / CSS
英国文胸专家:AmpleBosom.com
2018/02/06 全球购物
个人培训自我鉴定
2014/03/28 职场文书
连带责任保证书
2014/04/29 职场文书
会议营销主持词
2015/07/03 职场文书
毕业设计工作总结
2015/08/14 职场文书
Html5页面播放M4a音频文件
2021/03/30 HTML / CSS
一文搞清楚MySQL count(*)、count(1)、count(col)区别
2022/03/03 MySQL