从stdin读取,同时消耗的内存不超过需要

时间:2010-07-16 09:52:44

标签: python pipe stdin line-by-line

我正在尝试在python中创建逐行过滤器。但是,stdin.readlines()在开始处理之前读取所有行,并且python内存不足(MemoryError)。

我如何一次只在内存中一行

我的代码类型:

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

(注意:我在2.6)

2 个答案:

答案 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)