Python篇----命令行调用、输出log日志并打包的脚本

一 前言

这个脚本不够健壮,只是我个人使用,处理一些大数据的业务。分享给大家,不要乱玩,会玩坏的。。。大家看看思路就好了。

该脚本将输出今天的log文件内容。如果log文件是今日新建的,日志内容将会放在里面。如果不是,就会将存储位置下的.log文件打成 .tar.gz 包。同时以当日时间作为log文件的名称(前缀程序会给你补上),再放入log日志内容,最后存储在用户输入的路径下。


处理场景:每天某文件夹下有大量的log日志文件输出。该脚本可以在命令行调用,输出log日志,压缩log日志

注意:某个位置下,必须有一个“前缀-xxxx-xx-xx.log”文件【前缀是指你输入的log文件的前缀,xxxx-xx-xx是指年月日】。否则,程序必然崩溃(我没有写判断)。

使用方法:(我的脚本是logPut.py文件)命令行输入: python logPut.py -d log日志的存储路径 -f log日志文件名的前缀 -c log日志的内容

二 代码

# -*- coding: utf-8 -*-
import sys
import getopt
import tarfile
import time
import re
import glob
import os

#帮助函数
def helping():
    print sys.argv[0]+"-d 路径 -f 文件名前缀 -c log日志内容"
    print sys.argv[0] +"-h 获取帮助文档"

#压缩log文件函数
def tar(fname):
    t = tarfile.open(fname + ".tar.gz", "w:gz")
    p,f=os.path.split(fname)
    os.chdir(p)
    t.add(f)
    t.close()

print "脚本名:", sys.argv[0]
#for i in range(1, len(sys.argv)):
#print "参数", i, sys.argv[i]

#hd:f:c:  ,表示命令的开头,h:帮助 ,d:log文件存储路径,f:log文件的前缀,c:log文件的内容
opts, args = getopt.getopt(sys.argv[1:], "hd:f:c:")

#获取的变量内容,定义
path=""
filePrefix=""
content=""

#循环对变量进行赋值
for op, value in opts:
    if op == "-d":
        path = value
    elif op == "-f":
        filePrefix = value
    elif op == "-c":
        content = value
    elif op == "-h":
        helping()
        sys.exit()

#时间模块,用于给log文件添加时间 
#设置时间格式
ISOTIMEFORMAT="%Y-%m-%d"
timeNow = time.strftime(ISOTIMEFORMAT, time.localtime())


#Mac下的路径:/Users/tanishindaira/Desktop,Windows平台下,路径是不同的
#通过字符串拼接,确定存储位置和文件名称
fileName = path+"/"+filePrefix+"-"+timeNow+".log"


#切割文件名,获取时间
filesNameSplit = path+r"/cms-*.log"
list = glob.glob(filesNameSplit)
cont=""
for i in list:
    baseName = os.path.basename(i)
    cont += os.path.basename(i)
cut = re.split(r'(\W+)',cont)
#print cut
timeOld = cut[2]+cut[4]+cut[6]
#print timeOld


#切割当前系统时间
cut1 = re.split(r'(\W+)',timeNow)
timeNowSplit = cut1[0]+cut1[2]+cut1[4]
#print timeNowSplit

#判断时间,相等则写在当前文件内,不相等则单独写在新的文件内
if timeOld == timeNowSplit:
    #写在当前文件
    f = file(fileName,"a")
    f.write(content+"\n")
    f.close
else:
    #写在新文件里面
    f = file(fileName,"a")
    f.write(content+"\n")
    f.close

    #将旧的log文件打包tar
    fileNameNew = path+"/"+cont
    tar(fileNameNew)
    
    #删除旧的文件
    if os.path.exists(fileNameNew):
        os.remove(fileNameNew)


#输出结果
print  "程序执行成功"
print path
print filePrefix
print content


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值