2010-07-16 4 views
2

파이썬에서 라인별로 필터를 만들려고합니다. 그러나 stdin.readlines()은 처리를 시작하기 전에 모든 행을 읽고 파이썬은 메모리가 부족합니다 (MemoryError).stdin에서 읽는 동안 필요 이상의 메모리를 사용하지 않습니다.

어떻게 한 번에 메모리에 한 라인을 가질 수있다?

코드의 종류 내가 가진 :

for line in sys.stdin.readlines(): 
    if(filter.apply(line)): 
     print(line) 

(참고 : 저는 2.6에있어)

답변

10
for line in sys.stdin: 
    ... 

또는 루프에서 .readline()를 호출합니다.

2
import sys 
while 1: 
    line = sys.stdin.readline() 
    if not line: 
     break 
    if (filter.apply(line)): 
     print(line)