python图形分析_使用Python图形化分析大Log文件
最近因為項目需要經常分析數據量很大的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文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 人工智能、深度学习和机器学习有哪些区别?
- 下一篇: 37Java流程控制-打印三角形及deb