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 yield 使用浅析
May 28 Python
python 生成器协程运算实例
Sep 04 Python
selenium python浏览器多窗口处理代码示例
Jan 15 Python
Python cookbook(数据结构与算法)实现查找两个字典相同点的方法
Feb 18 Python
python中datetime模块中strftime/strptime函数的使用
Jul 03 Python
django中ORM模型常用的字段的使用方法
Mar 05 Python
python实现小球弹跳效果
May 10 Python
python+openCV调用摄像头拍摄和处理图片的实现
Aug 06 Python
pyinstaller打包成无控制台程序时运行出错(与popen冲突的解决方法)
Apr 15 Python
五种Python转义表示法
Nov 27 Python
python读取图片颜色值并生成excel像素画的方法实例
Feb 19 Python
Python djanjo之csrf防跨站攻击实验过程
May 14 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 编程请选择正确的文本编辑软件
2006/12/21 PHP
PHP 数组教程 定义数组
2009/10/23 PHP
如何判断php数组的维度
2013/06/10 PHP
php实现QQ空间获取当前用户的用户名并生成图片
2015/07/25 PHP
使用PHP如何实现高效安全的ftp服务器(一)
2015/12/20 PHP
在WordPress中获取数据库字段内容和添加主题设置菜单
2016/01/11 PHP
php封装的smarty类完整实例
2016/10/19 PHP
关于javascript 回调函数中变量作用域的讨论
2009/09/11 Javascript
JavaScript 类的定义和引用 JavaScript高级培训 自定义对象
2010/04/27 Javascript
jQuery中 noConflict() 方法使用
2013/04/25 Javascript
基于js disabled="false"不起作用的解决办法
2013/06/26 Javascript
Grunt入门教程(自动任务运行器)
2015/08/06 Javascript
NodeJs通过async/await处理异步的方法
2017/10/09 NodeJs
Vue2.0用户权限控制解决方案
2017/11/29 Javascript
解决js相同的正则多次调用test()返回的值却不同的问题
2018/10/10 Javascript
JavaScript函数的特性与应用实践深入详解
2018/12/30 Javascript
JavaScript 变量,数据类型基础实例详解【变量、字符串、数组、对象等】
2020/01/04 Javascript
Javascript如何递归遍历本地文件夹
2020/08/06 Javascript
JavaScript数组常用的增删改查与其他属性详解
2020/10/13 Javascript
[03:26]回顾2015国际邀请赛中国区预选赛
2015/06/09 DOTA
[01:13:18]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
python3使用urllib模块制作网络爬虫
2016/04/08 Python
Python3基于sax解析xml操作示例
2018/05/22 Python
利用nohup来开启python文件的方法
2019/01/14 Python
Python设计模式之建造者模式实例详解
2019/01/17 Python
python批量修改图片尺寸,并保存指定路径的实现方法
2019/07/04 Python
Django模板获取field的verbose_name实例
2020/05/19 Python
利用python实现汉诺塔游戏
2021/03/01 Python
全球最大的在线橄榄球商店:Lovell Rugby
2018/05/20 全球购物
菲律宾优惠券网站:MetroDeal
2019/04/12 全球购物
澳大利亚领先的在线药房:Pharmacy Online(有中文站)
2020/02/22 全球购物
Java里面有没有全局变量?为什么?
2015/02/06 面试题
UNIX命令速查表
2012/03/10 面试题
老师给学生的表扬信
2014/01/17 职场文书
酒吧创业计划书
2014/01/18 职场文书
119消防日活动总结
2014/08/29 职场文书