最近因为项目需要经常分析数据量很大的Log文件,以往靠手工目测的分析方法已不太可能快速分析和定位问题。

由于和我一起做这个项目的同事,会使用Python,编写的Python脚本能够将Log中的相关数据以图形的方式显示出来,这样就便于我们快速检测出是否输入、输出有异常情况发生。

这样,也就加快了解决问题的效率。

为此,在这里简要记录一下具体的方法,以便以后在需要的时候能够做参考。

工具准备

需要的工具如下:

Python(版本是2.7.3,自带一个简单的IDE)

数值运算库numpy,matplotlib依赖这个库

类似matlab的图形库matplotlib

文本编辑工具sed

有了这些工具,还需要了解一些正则表达式,可参看这里。

当然,基本的Python脚本编程功底的需要的。网上关于Python的教程有很多,我参考了如下几篇:

从这几天学习的效果来看,Python应该算是比较容易上手的语言。

可能是Python里面的语法和概念和C++有相似之处,所以很多语法基本只有了解一下怎么写就可以了。

其中,列表、序列、字典这几种Python中的数据结构要用熟,另外,在Python中不需要再关心数据的类型,直接用就好了。

终于体会到一点“学好C++之后再学其他语言要相对容易”的感觉。

看了上述的教程,现在写一些简单的脚本也是很容易的了。

分析Log文件的过程

编写批处理文件,使用Sed命令从Log文件中提取出需要的数据,将所有匹配数据所在的行都打印出来,写并到其他的文件中

参考下面的代码,其中,Sed命令中引号的内容为要匹配文本的正则表达式,正则表达式在两个斜杠之间,后面的p是打印的命令,Sed命令执行的结果被重定向到后面的文件中。

del /f/s/q Video.txtdel /f/s/q Audio.txtdel /f/s/q VideoRecv.txtdel /f/s/q AudioRecv.txtdel /f/s/q videopts.txtdel /f/s/q audiopts.txtsed -n "/Video.*New Frame/p" tsmux.txt>>Video.txtsed -n "/Audio.*New Frame/p" tsmux.txt>>Audio.txtsed -n "/nType : ESTYPE_VIDEO/p" tsmux.txt>>VideoRecv.txtsed -n "/nType : ESTYPE_AUDIO/p" tsmux.txt>>AudioRecv.txtsed -n "/origin pts: .*, video/p" tsmux.txt>>videopts.txtsed -n "/origin pts: .*, audio/p" tsmux.txt>>audiopts.txt

这个批处理的脚本要和要分析的Log文件放在同一文件夹下,这样双击执行脚本,文件夹中会多了5个文件,这几个文件就是我们下面Python脚本需要用到的。

编写分析Log数据的Python脚本,该脚本运行后会以图形的方法显示出相关数据的分析结果

下面这个例子要完成的功能就是前端输入PTS的总体趋势是否正确,有无明显跳变。

import reimport matplotlib.pyplot as pltprint "analyse video input pts!..."regex = re.compile('video pts : (\d+)')regex1 = re.compile('audio pts : (\d+)')video_index = []video_pts = []'''file = open("videopts.txt", "rb")log = file.readline()while log:found = regex.search(log)if found:video_index.append(len(video_index))video_pts.append(found.group(1))log = file.readline()file.close()'''file = open("videopts.txt", "rb")log = file.read()file.close()m = regex.findall(log)if m:print "video match success"for pts in m:video_index.append(len(video_index))video_pts.append(pts)else:print "not match"audio_index = []audio_pts = []file1 = open("audiopts.txt", "rb")log1 = file1.read()file1.close()m1 = regex1.findall(log1)if m1:print "audio match success"for pts1 in m1:audio_index.append(len(audio_index))audio_pts.append(pts1)else:print "audio not match"print "begin to plot"fig = plt.figure()video_pts_plot = fig.add_subplot(211)video_pts_plot.plot(video_index, video_pts, 'r')audio_pts_plot = fig.add_subplot(212)audio_pts_plot.plot(video_index, video_pts, 'b')plt.show()

运行这个Python脚本后,可看到输入的Video/Audio PTS以图形的方式被显示出来。

在这个例子中,我们可以看到要使用到Python的正则表达式库re,图形绘制库matplotlib,还需要了解python中文件的操作,列表的使用等。

具体的用法请google其他资料。

(完)

python图形分析_使用Python图形化分析大Log文件相关推荐

  1. mysql 图形插件_对我来说数据库图形化管理工具用这个足够了

    1. 前言 胖哥是一个有软件洁癖的人,能用现有的软件解决问题的绝不安装新的软件.Java后端开发主要跟数据库打交道,所以数据库图形化界面(GUI)是少不了的.通常图形化操作关系型数据库(RMDBS)大 ...

  2. python 图形模块_用Python的turtle模块绘制基本的几何图形

    import turtle #正方形 ''' i=0 while i<4: turtle.forward(100) turtle.right(90) i+=1 turtle.hideturtle ...

  3. python图形模块_使用Python图形模块:有没有办法将当前窗口保存为图像?

    我正在使用pythongraphics模块.我要做的是将当前窗口保存为图像.在模块中,有一个选项可以将"图像"另存为图像(图像.保存()). 但这并没有帮助,因为它只是保存一个已经 ...

  4. python爬取豆瓣读书并进行图形化分析

    python爬取豆瓣读书并进行图形化分析 豆瓣读书网页数据爬取并保存至csv 对数据进行分析并汇成图形 绘制散点图 图形效果展示 以下代码内容大多是团队小伙伴的杰作,而本人只是为了能让更多的人学习到知 ...

  5. 【kimol君的无聊小发明】—用python写论文下载器(图形化界面)

    [kimol君的无聊小发明]-用python写论文下载器(图形化界面) 前言 一.使用说明 二.代码分析 1. 功能函数 2. 回调函数 3. 线程生成函数 4. 效果展示 写在最后 前言 某个夜深人 ...

  6. Python自动生成代码 - 通过tkinter图形化操作生成代码框架

    Python自动生成代码 - 通过tkinter图形化操作生成代码框架 背景 脚本代码 Demo_CodeGenerator.py display.py FileHandler.py: 脚本运行结果: ...

  7. python 概率分布模型_使用python的概率模型进行公司估值

    python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...

  8. python 时间序列预测_使用Python进行动手时间序列预测

    python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...

  9. python 嵌入式界面_运用Python和PyQT开发嵌入式ARM的界面

    Python是一种跨平台的计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的开发 1) ...

  10. 网络协议图形化分析工具EtherApe

    网络协议图形化分析工具EtherApe 在对网络数据分析的时候,渗透测试人员往往只关心数据流向以及协议类型,而不关心具体数据包的内容.因为这样可以快速找到网络的关键节点或者重要的协议类型. Kali ...

最新文章

  1. 苏宁云仓投入使用,此时物流爆发是否来得及?
  2. express基础一:开始
  3. SAP Spartacus里的defaultOccProductConfig
  4. java io 读取多个对象_Java IO系列(五):读写对象ObjectOutputStream和ObjectInputStream详解...
  5. 关于Hibernate
  6. Qt利用avilib实现录屏功能_openlayers6结合geoserver利用WFS服务实现图层编辑功能(附源码下载)...
  7. 北妈每日总结: 2019年前端人必须学会写博客
  8. Primefaces,Spring 4 with JPA(Hibernate 4 / EclipseLink)示例教程
  9. Leetcode 335. 路径交叉(Self Crossing)
  10. Sharepoint2013搜索学习笔记之自定义查询规则(十)
  11. IOS推送通知的实现步骤
  12. SwitchHosts工具介绍及下载
  13. 计算机老是蓝屏需要重新启动3,电脑蓝屏重启,教您电脑经常自动蓝屏重启怎么办...
  14. 使用StarUML画类图
  15. L2-040 哲哲打游戏
  16. java中timestamp_JAVA日期处理(Timestamp)
  17. web渗透测试----34、DoS和DDoS攻击
  18. java ranger rest_Ranger前台分析
  19. app inventor我的漫画书
  20. pod install 之后 需要重新 设置teamId

热门文章

  1. 面向对象嵌入式系统开发7-嵌入式系统的实现
  2. 京东暑期实习面经(已OC)
  3. java基础知识(七)-- 泛型(Generics )
  4. android 开游艇游戏,游艇狂飙游戏-游艇狂飙安卓版预约_第一手游网
  5. java 图片不失真缩放,ico格式图片转换,透明图层,jar->exe
  6. 【webview】微信和PC监听浏览器关闭和刷新(亲测可用)
  7. opencv环境配置相关软件
  8. 7z格式、LZMA压缩算法和7-Zip详细介绍
  9. 高考倒计时100天....99天
  10. CSS3动画animation认识和Animate.css的使用