python 实现保存最新的三份文件,其余的都删掉
我就废话不多说了,直接上代码吧!
"""
对于每天存储文件,文件数量过多,占用空间
采用保存最新的三个文件
"""
fromairflowimportDAG
fromairflow.operators.python_operatorimportPythonOperator
fromairflow.modelsimportVariable
fromsctetl.airflow.utilsimportdateutils
fromdatetimeimportdatetime,timedelta
importlogging
importos
importshutil
"""
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))
defkeep_three_day():
path=os.path.join(base_dir,data_dir)
date_cates=os.listdir(path)
forcateindate_cates:
p=os.path.join(base_dir,data_dir,cate)
ifos.path.isdir(p):
dir_names=os.listdir(p)
dir_names.sort()
foriindir_names[:-keep]:
logging.info("删除目录{path}".format(path=os.path.join(p,i)))
shutil.rmtree(os.path.join(p,i))
withdag:
keep_three_file=PythonOperator(task_id="keep_three_file",python_callable=keep_three_day(),dag=dag)
keep_three_file
以上这篇python实现保存最新的三份文件,其余的都删掉就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。