2010-07-16 34 views
2

我想在python中創建一行一行的過濾器。但是,stdin.readlines()在開始處理之前會讀取所有行,並且python內存不足(MemoryError)。從標準輸入讀取,而不消耗比所需內存

我怎樣才能讓在內存中只有一行

那種代碼,我有:

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)