2010-07-16 2 views
2

Я пытаюсь создать по очереди фильтр в python. Тем не менее, stdin.readlines() считывает все строки перед началом обработки, а на python заканчивается память (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) 
Смежные вопросы