python 打包前三天日志
日志格式
app-2019-07-24.log
app-2019-07-24.1.log
该脚本适合一天之内有多个日志文件
# /usr/bin/python
#-*- coding: utf-8 -*-
# Description 日志压缩 import os
import datetime
import re
import tarfile #获取前几天的日期
def getdate(before_day):
today = datetime.datetime.now()
# 计算偏移量
offset = datetime.timedelta(days=-before_day)
# 获取想要的日期的时间
re_date = (today + offset).strftime('%Y-%m-%d')
return re_date # 获取文件路径集合,不包含子目录
def getFile(logsPath):
logs_file = []
file_list = os.listdir(logsPath)
for file_name in file_list:
path = os.path.join(logsPath, file_name)
if os.path.isdir(path):
continue
logs_file.append(path) return logs_file # 检查文件,并压缩
def tar_file(logs_file,i):
new_date = datetime.datetime.now().strftime('%Y-%m-%d') # 当前时间
logs_old=[]
for f in logs_file:
# 过滤掉压缩文件
if f.endswith(".tar.gz"):
continue
# 使用正则获取日志文件名的时间
mat = re.search(r"(\d{4}-\d{1,2}-\d{1,2})", f)
if bool(mat):
delta = datetime.datetime.strptime(new_date, '%Y-%m-%d') - datetime.datetime.strptime(mat.group() ,'%Y-%m-%d')
if delta.days == i:
f=re.split("/", f)[-1]
logs_old.append(f) old_date = getdate(i)
if len(logs_old) == 0:
return
filename = re.split("-", logs_old[0])[0]
filename = re.split("/", filename)[-1]
tar_file_name = filename + "-" + old_date + ".tar.gz"
#print(tar_file_name)
if os.path.exists(tar_file_name):
print(tar_file_name,"is exists")
return
tar = tarfile.open(tar_file_name, "w:gz")
for i in logs_old:
tar.add(i)
os.remove(i)
tar.close if __name__ == "__main__":
logsPath = "/opt/"
os.chdir(logsPath)
logs_file = getFile(logsPath)
for i in range(1, 4):
tar_file(logs_file, i)
设置为定时任务
这是我的脚本路径(/opt/script/tar_logs.py)
* * * /usr/bin/python /opt/script/tar_logs.py
参考 https://www.jianshu.com/p/e79ec1ce39d8
python 打包前三天日志的更多相关文章
- 少儿编程崛起?2020年4月编程语言排名发布——Java,C,Python分列前三,Scratch挤进前20
前三并没有什么悬念,依然是Java,C,Python.C与Java的差距正在缩小,不过我们不用担心,在大数据分析领域Java,Python依然都是不可或缺的. 基于图形的基于块的编程语言Scratch ...
- python预科前三天:计算器知识、Python下载和安装、Pycharm下载安装激活设置、解释型和编译型、git、思维导图、显示隐藏文件、隐藏已知文件扩展名、创建组织、创建项目、提交作业、排BUG技巧
1.计算机组成结构:CPU.硬盘.内存.输入输出设备.主板.电源. 2.硬件之间的协作关系:是CPU运算完后给操作系统.专业术语叫指令. 3.键盘输入a之后发生的事情:键盘-CPU-操作系统-显卡-显 ...
- jenkinsapi和python打包工具的安装日志
Successfully installed PyInstaller-3.3.1 altgraph-0.15 dis3-0.1.2 future-0.16.0 macholib-1.9 pefile- ...
- Python 打包的现状:包的三种类型
英文 | The state of Python Packaging[1] 原作 | BERNAT GABOR 译者 | 豌豆花下猫 声明 :本文获得原作者授权翻译,转载请保留原文出处,请勿用于商业或 ...
- 用python+selenium抓取知乎今日最热和本月最热的前三个问题及每个问题的首个回答并保存至html文件
抓取知乎今日最热和本月最热的前三个问题及每个问题的首个回答,保存至html文件,该html文件的文件名应该是20160228_zhihu_today_hot.html,也就是日期+zhihu_toda ...
- Python 全栈开发九 日志模块
日志是一种可以追踪某些软件运行时所发生事件的方法.软件开发人员可以向他们的代码中调用日志记录相关的方法来表明发生了某些事情.一个事件可以用一个可包含可选变量数据的消息来描述.此外,事件也有重要性的概念 ...
- Python 打包——过去、现在与未来
英文 | Python packaging - Past, Present, Future[1] 原作 | BERNAT GABOR 译者 | 豌豆花下猫 声明 :本文获得原作者授权翻译,转载请保留原 ...
- 进击的Python【第三章】:Python基础(三)
Python基础(三) 本章内容 集合的概念与操作 文件的操作 函数的特点与用法 参数与局部变量 return返回值的概念 递归的基本含义 函数式编程介绍 高阶函数的概念 一.集合的概念与操作 集合( ...
- Python 打包和发布方法汇总
以下主要Python打包汇总,作为学习备份: 一.使用python内部基础工具包Distutils打包程序 1. 在打包之前需要做的就是配置好安装脚本,一般为setup.py文件: 示例(setup. ...
随机推荐
- System.NotSupportedException:“No data is available for encoding 1252. For information on defining a custom encoding
最近搞 .net项目,Dapper连接Mysql时,运行报错: System.NotSupportedException:“No data is available for encoding 1252 ...
- 【AtCoder】 ARC 096
link C-Half and Half 题意:三种pizza,可以花\(A\)价钱买一个A-pizza,花\(B\)价钱买一个B-pizza,花\(C*2\)价钱买A-pizza和B-pizza各一 ...
- 重置GPU显存 Reset GPU memory after CUDA errors
Sometimes CUDA program crashed during execution, before memory was flushed. As a result, device memo ...
- iptables 端口转发--内网实现上网
iptables -t nat -I POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 118.x.x.xiptables -A FORWARD -s ...
- Spring中为什么继承了ApplicationContextAware接口就可以使用ApplicationContext对象?
1.Spring中使用applicationContext对象 public class SpringContextUtil implements ApplicationContextAware { ...
- arcpy地理处理工具案例教程-生成范围-自动画框-深度学习样本提取-人工智能-AI
arcpy地理处理工具案例教程-生成范围-自动画框-深度学习样本提取-人工智能-AI 商务合作,科技咨询,版权转让:向日葵,135-4855_4328,xiexiaokui#qq.com 目的:对面. ...
- 【SpringBoot】SpringBoot 国际化(七)
本周介绍SpringBoot项目的国际化是如何处理的,阅读本章前请阅读[SpringBoot]SpringBoot与Thymeleaf模版(六)的相关内容 国际化原理 1.在Spring中有国际化Lo ...
- PAT 甲级 树专题小结
1.已知两个序链表建树 先序中序建树 PAT 1086 node *buildTree(vector<int>pre,vector<int>in,int pl,int pr,i ...
- Springboot+Quartz+druid+多库
很久以前就用过quartz,现在重新用起,主要实现集群方式启动,并且支持多数据源注入到job中.网上demo很多,方法大同小异.但关于数据源注入的深入介绍不多,不错的文章:<spring-boo ...
- html5 video标签播放视频流
从文件服务器读取音视频文件,以流的方式传给前台,并能够播放视频. 做了一个demo,用html5的video,audio标签实现. 后台实现代码: @GetMapping(value = " ...