日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python图形分析_使用Python图形化分析大Log文件

發布時間:2024/3/13 python 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。