zoukankan      html  css  js  c++  java
  • 提取日志文件的指定内容

    如下日志,提取出Notice:开头的行中的ctime的值,然后求平均数

    a.log日志文件

    Notice:hjhj hjj  hj  hj j h j hh ctime:35s fr  fr f rf r fr f r
    Notice:hjhj hjj  hj  hj j h j hh ctime:35s fr  fr f rf r fr f r
    112222221111111122233331111111111111
    Notice:hjhj hjj  hj  hj j h j hh ctime:35s fr  fr f rf r fr f r
    hhhhhhhhhhhhhhhhhhhhhhhhh
    Notice:hjhj hjj  hj  hj j h j hh ctime:35s fr  fr f rf r fr f r
    
    
    Notice:hjhj hjj  hj  hj j h j hh ctime:35s fr  fr f rf r fr f r
    
    
    Notice:hjhj hjj  hj  hj j h j hh ctime:35s fr  fr f rf r fr f r
    
    Notice:hjhj hjj  hj  hj j h j hh ctime:35s fr  fr f rf r fr f r
    
    Notice:hjhj hjj  hj  hj j h j hh ctime:35s fr  fr f rf r fr f r
    Notice:hjhj hjj  hj  hj j h j hh ctime:35s fr  fr f rf r fr f r
    Notice:hjhj hjj  hj  hj j h j hh ctime:35s fr  fr f rf r fr f r
    
    Notice:hjhj hjj  hj  hj j h j hh ctime:35s fr  fr f rf r fr f r
    Notice:hjhj hjj  hj  hj j h j hh ctime:35s fr  fr f rf r fr f r
    Notice:hjhj hjj  hj  hj j h j hh ctime:35s fr  fr f rf r fr f r

    解决方法

    #coding=utf-8
    import re
    
    def gettime(l):
        num=""
        index=int(l.find("ctime"))+6
        while(True):
            if(l[index]=="s"):
                break
            else:
                num+=l[index]
            index+=1
        return int(num)
    
    t=0
    count=0
    with open("a.log","r") as f:
        while(True):
            l=f.readline()
            if(not l):
                break
            if(re.match("Notice:",l)):
                t+=gettime(l)
                count+=1
        average=t/count
        print(average)

    输出

    35.0

  • 相关阅读:
    从SmartObject中读取数据
    将数据存储到SmartObject中
    浅识K2 blackpearl中SmartObject
    .net基础
    字符编码
    PowerDesigner教程系列
    Asp.net 2.0(C#)图片存储到数据库和从数据库读取显示
    按回车提交问题:
    .NET设计模式(2):单件模式(Singleton Pattern)
    常用正则表达式收集
  • 原文地址:https://www.cnblogs.com/sea-stream/p/11273039.html
Copyright © 2011-2022 走看看