我想解析一個巨大的日誌文件(大約5 GB)。在Python中解析巨大的日誌文件
我只想解析前500,000行,我不想將整個文件讀入內存。
基本上,我想要做的是下面的代碼是做的,但用while
循環代替for
循環和if
有條件。我也想確保不會將整個文件讀入內存。
import re
from collections import defaultdict
FILE = open('logs.txt', 'r')
count_words=defaultdict(int)
import pickle
i=0
for line in FILE.readlines():
if i < 500000:
m = re.search('key=([^&]*)', line)
count_words[m.group(1)]+=1
i+=1
csv=[]
for k, v in count_words.iteritems():
csv.append(k+","+str(v))
print "\n".join(csv)