我正在尝试在python中创建逐行过滤器。但是,stdin.readlines()
在开始处理之前读取所有行,并且python内存不足(MemoryError
)。
我如何一次只在内存中一行?
我的代码类型:
for line in sys.stdin.readlines():
if( filter.apply( line ) ):
print( line )
(注意:我在2.6)
答案 0 :(得分:12)
for line in sys.stdin:
...
或者在循环中调用.readline()
。
答案 1 :(得分:2)
import sys
while 1:
line = sys.stdin.readline()
if not line:
break
if (filter.apply(line)):
print(line)