巨大なログファイル(約5 GB)を解析しようとしています。PythonでGigantic Log Fileを解析する
最初の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)