Skip to content

Instantly share code, notes, and snippets.

@ranlix
Last active December 31, 2015 05:49
Show Gist options
  • Save ranlix/7943899 to your computer and use it in GitHub Desktop.
Save ranlix/7943899 to your computer and use it in GitHub Desktop.
同事要处理一个较大数据的log,提取里面的关键字,生成一个csv文件,来进行视频切换时候播放器的性能是否达标,每行的数据依次为:Stop | Close | Open | Run | VideoRenderStart | VideoStopBuff.
# -*- coding:utf-8 -*-
import re
import os
import csv
import sys
log_file = sys.argv[1]
# log_file = r"csv.log"
# csv_content = []
# new_csv = sys.argv[2]
# new_csv = r"result.csv"
csv_name = os.path.splitext(log_file)[0] + ".csv"
csvfile = file(csv_name, 'wb')
writer = csv.writer(csvfile)
"""
12-12 16:46:39.942 I/TimeCal Stop <---(27363): Current Time: 1386837999947 ms.\
Time delta: 91 ms
12-12 16:46:40.047 I/TimeCal Close <---(27363): Current Time: \
1386838000050 ms. Time delta: 103 ms
12-12 16:46:40.142 I/TimeCal Open <---(27363): Current Time: \
1386838000148 ms. Time delta: 98 ms
12-12 16:46:55.087 I/TimeCal Run <---(27363): Current Time: \
1386838015092 ms. Time delta: 4 ms
12-12 16:48:41.217 I/TimeCal Receive VOOSMP_CB_VideoStopBuff <---(27363): \
Current Time: 1386838121220 ms. Time delta: 15200 ms
12-12 16:48:41.217 I/TimeCal Receive VideoRenderStart <---(27363): \
Current Time: 1386838121220 ms. Time delta: 0 ms
"""
# pattern_Stop = """"(\d{2}-\d{2}:\d{2}:\d{2}.\d{3}\D* )(Stop)( <---.*)\
# (Time delta: )(\d+) ms$"""
# pattern_Stop = "(.*)(Stop)( <---.*)(Time delta: )(\d+) ms$"
# pattern_Close = "(.*)(Close)( <---.*)(Time delta: )(\d+) ms$"
# pattern_Open = "(.*)(Open)( <---.*)(Time delta: )(\d+) ms$"
# pattern_Run = "(.*)(Run)( <---.*)(Time delta: )(\d+) ms$"
# pattern_VideoStopBuff = """(.*Receive )(VOOSMP_CB_VideoStopBuff)( <---.*)\
# (Time delta: )(\d+) ms$"""
# pattern_VideoRenderStart = """(.*Receive )(VideoRenderStart)( <---.*)\
# (Time delta: )(\d+) ms$"""
# pattern_Drm = "(.*)(Init Drm server.*)( <---.*)(Time delta: )(\d+) ms$"
pattern_Stop = "(Stop) <---.* Time delta: (\d*) ms"
pattern_Close = "(Close) <---.* Time delta: (\d*) ms"
pattern_Open = "(Open) <---.* Time delta: (\d*) ms"
pattern_Run = "(Run) <---.* Time delta: (\d*) ms"
pattern_VideoStopBuff = "(VOOSMP_CB_VideoStopBuff) <---.* Time delta: (\d*)"
pattern_VideoRenderStart = "(Receive VideoRenderStart) <---.*Time delta: (\d*)"
# pattern_Drm = "(Init Drm server.*) <---.*Time delta: (\d*) ms$"
patternDic = {"Stop": pattern_Stop,
"Close": pattern_Close,
"Open": pattern_Open,
"Run": pattern_Run,
"VideoStopBuff": pattern_VideoStopBuff,
"VideoRenderStart": pattern_VideoRenderStart}
patternList = ["Stop", "Close", "Open", "Run", "VideoStopBuff",
"VideoRenderStart"]
writer.writerow(patternList)
def segmentLog(logfile):
f = open(logfile, "rb")
flag = 1 # flag for readline
segment_mark = ".*VideoRenderStart <---.*"
tempList = [] # counter for readline
content = []
while flag:
line = f.readline()
tempList.append(line)
if re.search(segment_mark, line): # keyword is in that line
temp = ''.join(tempList)
content.append(temp)
tempList = []
else:
pass
if not line:
flag = 0
break
return content
def text2list(log_file):
"""translate text segment to new dictionary: {"Stop":xx, "Close":yy..}"""
# content = open("1.txt", "rb").read()
content = segmentLog(log_file)
segmentDicList = {}
segmentList = []
for segment in content:
# print segment
for key, vaule in patternDic.items():
# print key
# print vaule
result = re.search(vaule, str(segment))
# print result
if result:
segmentDicList[key] = result.group(2)
# print result.group(2)
else:
segmentDicList[key] = " "
segmentList.append([segmentDicList[key] for key in patternList])
return segmentList
if __name__ == '__main__':
line_list = text2list(log_file)
for i in line_list:
# print i
writer.writerow(i)
csvfile.close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment