2010-07-16 5 views
2

J'essaie de créer un filtre ligne par ligne en python. Cependant, stdin.readlines() lit toutes les lignes avant de commencer à traiter, et python manque de mémoire (MemoryError).lecture de stdin, tout en ne consommant pas plus de mémoire que nécessaire

Comment puis-je avoir juste une ligne en mémoire à la fois?

Le genre de code que j'ai:

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

(Note: Je suis sur 2,6)

Répondre

10
for line in sys.stdin: 
    ... 

ou appelez-.readline() dans une boucle.

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