Чтение из стандартного ввода, потребляя не больше памяти, чем необходимо
Я пытаюсь создать построчный фильтр в 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)