xuke123 发表于 2018-8-12 10:35:02

Python 解析日志生成excel报表

'''  This file is to parse during-timebetween some operations from log.
  
'''
  

  
import csv
  

  
file_path = "C:\\Users\\xxxxxx\\"
  
file_name = "xxxxxxx.txt"
  
file_text = file_path + file_name
  

  
beginConnect = " Enter ConnectToServer"
  
endConnect = "AuthDlg::OnInitDialog : Enter Init."
  

  
beginLogin = "AuthDlg::OnOk : Enter Windows_Password:Ok."
  
endLogin = "Notifying listener" ############need change
  

  
beginLaunchWin = "LaunchItem::Connect : Enter ConnectToItem"
  
endLaunchWin = "Ready to send request to" ###################need change
  

  
parseTable = dict()
  
resultTable = dict()
  

  
def InitParseTable():
  parseTable = dict()
  parseTable = dict()
  parseTable = dict()
  resultTable = dict()
  resultTable = dict()
  resultTable = dict()
  resultTable['Action'] = "ConnectToServer"
  resultTable['Action'] = "LogInServer"
  resultTable['Action'] = "LaunchWin"
  

  parseTable['begin'] = beginConnect
  parseTable['end'] = endConnect
  

  parseTable['begin'] = beginLogin
  parseTable['end'] = endLogin
  

  parseTable['begin'] = beginLaunchWin
  parseTable['end'] = endLaunchWin
  

  
def GetTime(_pos, _count, content):
  strParse = content.split()
  timeParse = strParse.split('+')
  resultTable = timeParse
  

  
def RunJob():
  fp = open(file_text,"r")
  content = fp.readline()
  _pos = 0
  _count = 'begin'
  while content:
  if content.find(parseTable) >= 0:
  GetTime(_pos, _count, content)
  if _count == 'begin':
  _count = 'end'
  else:
  _count = 'begin'
  _pos = _pos + 1
  if _pos > 2:
  break
  content = fp.readline()
  

  
def CountTime(beginTime, endTime):
  b = beginTime.split(":")
  e = endTime.split(":")
  countTime = (int(e) - int(b)) * 3600 + (int(e) - int(b)) * 60 + round((float(e) - float(b)), 3)
  return countTime
  

  
def PrintResult():
  for i in resultTable:
  resultTable['during'] = CountTime(resultTable['begin'], resultTable['end'])
  print resultTable
  

  
def GenerateCSV():
  csvfile = file('DuringTimeOfLog.csv', 'wb')
  writer = csv.writer(csvfile)
  writer.writerow(['Action', 'BeginTime','EndTime','DuringTime(seconds)'])
  for i in resultTable:
  row_data = [(resultTable['Action'], resultTable['begin'], resultTable['end'], resultTable['during'])]
  writer.writerows(row_data)
  csvfile.close()
  

  

  
if __name__ == "__main__":
  InitParseTable()
  RunJob()
  PrintResult()
  GenerateCSV()
页: [1]
查看完整版本: Python 解析日志生成excel报表