正则表达式

https://deerchao.cn/tutorials/regex/regex.htm
这篇文章,大佬写的很好。我这种菜鸟也看得懂哦。

领导写了一个python,去统计日志中的数据。只用了26行==我写了一个100行的java,split切割出有用的数据统计。先把日志文件从现场拷贝回来,然后运行java代码输出统计结果。用python的话,linux操作系统自带的python3命令,运行文件直接输出统计结果。这样我就轻松多了!

python,我第一次看,看不懂,找了一个算法的同事帮我看。她说了逻辑,我自己整理了下。大概意思是,sys.argv获取命令中的参数文件,判断名称长度,未输入文件名就退出.如果操作系统找不到输入的文件的路径,就退出。打开文件,对每一行日志做判断,如果用正则匹配上了,那么获取每一个匹配到的数字累加到数组中对应的变量中。重复这个操作,对每一行匹配,直到结束。输出数组内容。这样就统计完成一个日志文件中,对应的数据信息了!!

源码

import os
import re
import sys

REG_COUNT = '^.*stastic info.*consume]\\s(\\d+).*downsucc]\\s(\\d+).*downfail]\\s(\\d+).*recogsucc]\\s(\\d+).*recogfail]\\s(\\d+).*recogresult]\\s(\\d+).*sendsucc]\\s(\\d+).*sendfail]\\s(\\d+).*$'
COUNT_NAME = ["消费收到的数据", "图片下载成功", "图片下载失败", "识别成功图片", "识别失败图片", "识别结果数量", "推送成功", "推送失败"]
COUNT_VALUE = [0, 0, 0, 0, 0, 0, 0, 0]

if len(sys.argv) < 2:
    print('请指定文件名')
    sys.exit()

if not os.path.exists(sys.argv[1]):
    print('日志文件不存在:', sys.argv[1])
    sys.exit()

colLen = len(COUNT_VALUE)
with open(sys.argv[1], 'r', encoding='utf-8') as f:
    for line in f:
        match = re.match(REG_COUNT, line)
        if match:
            for i in range(colLen):
                COUNT_VALUE[i] += int(match.group(i + 1))

for i in range(colLen):
    print(COUNT_NAME[i], ':', COUNT_VALUE[i])

运行成功截图
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值