我有要求解析一個大文件(> 1GB)。這些行格式如下。快速解析python中的大文件
2014-03-11- 00.02.46.149069 TBegin(EVENTID = 「XXXX」,請求ID = 「請求」,SrvName = 「服務」,TXTIME = 「TRANSACTIONTIME」) ... ... End_TxTime新狀態ENTITYID =「XXXX」新狀態設定爲「完成」 = EVENTID「XXXX」的requestId =請求
我必須執行兩個操作 - 1)解析爲文件爲特定服務和記錄請求和開始TRANSACTIONTIME 2 )根據RequestId再次解析文件並記錄結束transactionTime
我的代碼在下面提供。
requestId={}
request_arry=[]
start_time={}
end_time={}
f= open(sys.argv[2],"r")
for line in f:
searchObj1=re.search(r'.*RequestId="(.*)",SrvName="%s.*TxTime="(.*)"\)' % service,line,re.M)
if searchObj1:
if searchObj1.group(1) in requestId:
pass
else:
requestId[searchObj1.group(1)]=i
request_arry.append(searchObj1.group(1))
start_time[searchObj1.group(1)]=searchObj1.group(2)
i=i+1
searchObj2=re.search(r'.*new state set to(.*).*RequestId = \'(.{16}).*',line,re.M)
if searchObj2:
if searchObj2.group(2) in requestId:
end_time[searchObj2.group(2)]=line[:26]
上面的代碼工作正常,但需要20分鐘來解析1GB的數據。 有什麼方法可以讓這個更快.. ?? 如果我能得到這樣的結果在一半的時間將是非常有幫助.. 請諮詢
.*
再經過
您可以添加完整的代碼示例嗎? –
您是否嘗試過爲文件讀取寫入生成器? – user3