Чтение из стандартного ввода, потребляя не больше памяти, чем необходимо

Я пытаюсь создать построчный фильтр в Python. Тем не мение, stdin.readlines() читает все строки перед началом обработки, и python не хватает памяти (MemoryError).

Как я могу иметь только одну строку в памяти за раз?

Тип кода у меня есть:

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

(примечание: я на 2.6)

2 ответа

Решение
for line in sys.stdin:
    ...

Или позвоните по телефону .readline() в петле.

import sys
while 1:
    line = sys.stdin.readline()
    if not line:
        break
    if (filter.apply(line)):
        print(line)
Другие вопросы по тегам