3

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

我怎么能一次只在内存中一行?

我拥有的那种代码:

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

(注意:我在 2.6)

4

2 回答 2

13
for line in sys.stdin:
    ...

或者.readline()循环调用。

于 2010-07-16T10:00:00.217 回答
2
import sys
while 1:
    line = sys.stdin.readline()
    if not line:
        break
    if (filter.apply(line)):
        print(line)
于 2010-07-16T10:33:55.070 回答