큰 로그 파일 (> 1GB)을 분석해야하므로 파이썬 프로그램을 작성했습니다. islice
을 사용하여 청크 (10,000 줄)로 파일을 읽을 수 있으므로 서버의 메모리가 부족하지 않게되었습니다.Python islice가 같은 줄을 읽습니다.
stackoverflow에서 일부솔루션을 찾았지만 isclice가 매번 동일한 라인을 읽으므로 프로그램이 예상대로 작동하지 않습니다 (그러나 전체 파일을 읽은 후 올바르게 중지됩니다 ...).
n = 100000; # n lines
inf = open(fn, "r")
while True:
next_n_lines = list(islice(inf, n))
if not next_n_lines:
break
out_fn = produce_clean_logfile(next_n_lines)
a, t = main(out_fn)
send_log(a,t)
당신은 무엇이 잘못 알아 :이 파이썬 2.5과 함께 제공하기 때문에 나는
내 코드처럼 보이는, 내가 ... 파이썬 2.4이 with open
을 사용할 수 없습니다? 사전에
감사합니다. 안심하시기 바랍니다. 감사합니다.
에 대한 GROUPBY을 사용할 수 있습니다 나는 itertools에서 islice으로 시도하고 작동합니다. 위법 구현이 잘못되었으므로 도움을 받으려면 게시해야합니다. – lc2817
내 스크립트의 맨 위에 나는'itertools import islice'에서 썼다. 내'islice' 코드가 내 질문 - 텍스트에 있습니다 ... –
당신 말이 맞아요, 또 다른 문제가있을 것입니다. 나는 멍청한 20 라인 파일로 테스트 해봤는데 작동하기 때문에 다른 장소에서 검색해야한다! 당신의 대답에 감사드립니다! –