从标准输入读取数据,同时只消耗必要的内存。

3

我想在Python中创建一种逐行过滤器。然而,stdin.readlines()会在开始处理之前读取所有行,导致Python内存不足(MemoryError)。

我该如何做到每次只有一行在内存中?

我目前的代码如下:

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

(注意:我在使用2.6版本)
2个回答

13
for line in sys.stdin:
    ...

或者在循环中调用.readline()


2
import sys
while 1:
    line = sys.stdin.readline()
    if not line:
        break
    if (filter.apply(line)):
        print(line)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接