RDOQ Time Matching 實戰:
目標:提取rdoq的運行時間。
工程中rdoq運行時間用全局變量統計,編碼結束後獲得rdoq總的運行時間。
原始做法是將該變量全部連續的寫到一個文件裏,每次手動填表
python 批處理 結合的嘗試 還未完全理解
但是將runtime寫到屏幕上,->轉入log文件中,直接對log文件的信息做匹配提取,效果也是一樣的佳。
要解決的問題:
1、匹配,好簡單
2、遍歷一個文件夾中的所有文件再做匹配
重點解決的是第二個
pathDir = os.listdir('C:/Users/wangm/Desktop/Bat/RA/log')
將路徑下的所有的文件名當作字符串,寫在了pathDir中,他是一個list
接下來的操作就可以按照粗暴的list循環的方式做
for filename in pathDir:
c = ''
c = 'C:/Users/wangm/Desktop/Bat/RA/log/' + filename
file_object = open(c, 'r')
print(file_object)
while 1:
chunk = file_object.readline()
if chunk == '':
break
matchTime = 'RdoqTime'
time = matching(chunk, matchTime, [1])
if time:
write_time(time, filename, "0.00")
print(time)
break
另一種結局方式是,爲了保證每次讀取文件數據的順序,可以先按照表格順序建表~
c變量的構成還是粗爆的。
f_out = open('C:/Users/wangm/Desktop/Bat/RA/rdoq.txt', 'w+')
import re
import string
import os
def matching(chunk, matchsyntax, index):
if re.match(matchsyntax, chunk):
splitWord = re.split(r'\s+', chunk)
matchWord = []
for i in index:
matchWord.append(splitWord[i])
return matchWord
def write_time(time, filename, incline):
f_out.write("%-10s"%(time[0]))
f_out.write(" ")
f_out.write("%40s"%(filename))
f_out.write(" ")
f_out.write(incline)
f_out.write("\n")
try:
pathDir = os.listdir('C:/Users/wangm/Desktop/Bat/RA/log')
write_time(["Time"], "FileName", "0.00")#Tag
for filename in pathDir:
c = ''
c = 'C:/Users/wangm/Desktop/Bat/RA/log/' + filename
file_object = open(c, 'r')
print(file_object)
while 1:
chunk = file_object.readline()
if chunk == '':
break
matchTime = 'RdoqTime'
time = matching(chunk, matchTime, [1])
if time:
write_time(time, filename, "0.00")
print(time)
break
finally:
file_object.close()
f_out.close()
在文本輸出格式方面,對其什麼的爲了方便複製粘貼還是有講究的
f_out.write("%-10s"%(time[0]))
帶格式的寫文件