python编写浪费内存吗_python编写自动压缩日志文件,减少磁盘空间浪费

介绍:

- 使用python编写一个自动压缩日志文件的脚本

相关技术:

1.使用python os.listdir遍历文件,不包含文件夹

2.使用python re正则表达式匹配日志文件

3.使用python tarfile模块压缩文件

注意:

请使用Linux的crontab使用,谢谢!

比如:

每天凌晨5点执行脚本

0 5 * * * /usr/bin/python /opt/script/compressLogs.py(这个是我的脚本路径)

效果图:

请看源代码,如果觉得好,还请给小编点赞下下哦!

#!/usr/bin python

# _*_ coding:utf-8 _*_

# Author: Gavin

# Version: 1.0

# CreateTime: 2018-09-04

# ScriptName: compressLogs

# Description: 压缩日志

# readme: logsPath请赋予相应的值

import os

import datetime

import re

import tarfile

# 获取文件路径集合

def getFile(logsPath):

logsFile = []

fileList = os.listdir(logsPath)

for fileName in fileList:

path = os.path.join(logsPath, fileName)

# 过滤子文件的文件被压缩

if os.path.isdir(path):

continue

logsFile.append(path)

return logsFile

# 检查文件,备份文件

def checkFile(logsFiles):

newDate = datetime.datetime.now().strftime('%Y-%m-%d') # 当前时间

for f in logsFiles:

# 过滤压缩文件检查

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(newDate, '%Y-%m-%d') - datetime.datetime.strptime(mat.group(), '%Y-%m-%d')

# 当前时间 - 文件时间 :大于0

if delta.days > 0:

# 已经压缩完成的日志文件,删除原日志文件,保留压缩文件

for apath in logsFiles:

if apath.endswith(".tar.gz") and apath.endswith("%s.tar.gz" % mat.group()):

os.remove(apath)

break

# 没有压缩的文件,压缩后,删除原文件

tar = tarfile.open("%s.tar.gz" % f[0: -4], "w:gz")

tar.add(f)

tar.close()

os.remove(f)

if __name__ == "__main__":

# 请修改日志路径,注意路径一定要完整,后面要使用str切割,不要省略路径某位的/

# windows: F://application_logs// linux: /opt/applog/

logsPath = "F://application_logs//"

logsFiles = getFile(logsPath)

checkFile(logsFiles)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值