python 实现保存最新的三份文件,其余的都删掉

时间:2021-05-22

我就废话不多说了,直接上代码吧!

"""对于每天存储文件,文件数量过多,占用空间采用保存最新的三个文件"""from airflow import DAGfrom airflow.operators.python_operator import PythonOperatorfrom airflow.models import Variablefrom sctetl.airflow.utils import dateutilsfrom datetime import datetime,timedeltaimport loggingimport osimport 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 实现保存最新的三份文件,其余的都删掉就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章