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实现获取某天是某个月中的第几周
Feb 11 Python
利用Python绘制数据的瀑布图的教程
Apr 07 Python
在Django中编写模版节点及注册标签的方法
Jul 20 Python
Python实现简单的代理服务器
Jul 25 Python
Python Web框架Tornado运行和部署
Oct 19 Python
python分割列表(list)的方法示例
May 07 Python
Python设计模式之命令模式简单示例
Jan 10 Python
python list元素为tuple时的排序方法
Apr 18 Python
详解Python 中sys.stdin.readline()的用法
Sep 12 Python
Python for循环搭配else常见问题解决
Feb 11 Python
python pyqtgraph 保存图片到本地的实例
Mar 14 Python
90行Python代码开发个人云盘应用
Apr 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把数字转成人民币大写的函数分享
2014/06/30 PHP
XRegExp 0.2: Now With Named Capture
2007/11/30 Javascript
JQuery中getJSON的使用方法
2010/12/13 Javascript
js 鼠标移动显示图片的简单实例
2013/12/25 Javascript
js加载读取内容及显示与隐藏div示例
2014/02/13 Javascript
Node.js node-schedule定时任务隔多少分钟执行一次的方法
2015/02/10 Javascript
js+html5实现可在手机上玩的拼图游戏
2015/07/17 Javascript
js实现鼠标点击左上角滑动菜单效果代码
2015/09/06 Javascript
jquery判断当前浏览器的实现代码
2015/11/07 Javascript
require.js+vue开发微信上传图片组件
2016/10/27 Javascript
JavaScript Canvas绘制圆形时钟效果
2020/08/20 Javascript
AngularJS双向绑定和依赖反转实例详解
2017/04/15 Javascript
node.js将MongoDB数据同步到MySQL的步骤
2017/12/10 Javascript
用React-Native+Mobx做一个迷你水果商城APP(附源码)
2017/12/25 Javascript
Node.js文件编码格式的转换的方法
2018/04/27 Javascript
解决vue 项目引入字体图标报错、不显示等问题
2018/09/01 Javascript
trackingjs+websocket+百度人脸识别API实现人脸签到
2018/11/26 Javascript
Vue自定义全局Toast和Loading的实例详解
2019/04/18 Javascript
webpack的 rquire.context用法实现工程自动化的方法
2020/02/07 Javascript
JSON获取属性值方法代码实例
2020/06/30 Javascript
在react-antd中弹出层form内容传递给父组件的操作
2020/10/24 Javascript
[54:53]完美世界DOTA2联赛PWL S2 GXR vs PXG 第二场 11.18
2020/11/18 DOTA
Python基础语法(Python基础知识点)
2016/02/28 Python
python xml解析实例详解
2016/11/14 Python
Python算法应用实战之队列详解
2017/02/04 Python
Django实现分页功能
2018/07/02 Python
Python在Matplotlib图中显示中文字体的操作方法
2019/07/29 Python
html5 input属性使用示例
2013/06/28 HTML / CSS
澳大利亚一站式数码相机商店:CameraPro
2020/03/09 全球购物
信息工作经验交流材料
2014/05/28 职场文书
2014年乡镇工作总结
2014/11/21 职场文书
2015年销售员工作总结范文
2015/04/07 职场文书
酒店工程部经理岗位职责
2015/04/09 职场文书
红领巾广播站广播稿
2015/08/19 职场文书
关于python类SortedList详解
2021/09/04 Python
动画「进击的巨人」第86话播出感谢绘公开
2022/03/21 日漫