我有要求解析一个大文件(> 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