2016-05-18 7 views
0

Angenommen, ich habe eine Datei source.txt mit ein paar Zeilen. Ich möchte Zeilen immer wieder drucken, bis ich das Programm manuell unterbricht.Schleife über die Liste viele Male

Die einfachste Lösung ist Fut Öffnen und Schließen in While-Schleife. Nach meinem Gefühl ist das nicht die beste Lösung.

Können Sie etwas besseres vorschlagen? Wie Schleife über variable Quelle viele Male?

Grüße

+2

Haben Sie in 'itertools.cycle' gesucht? – jonrsharpe

Antwort

4

war ich nicht sicher, ob das funktionieren würde, aber es scheint, kann man nur seek zum Anfang der Datei und dann weiter iteriert:

file_source = 'source.txt' 
source = open(file_source,'r') 

while 1: 
    for line in source: 
     print line 
    source.seek(0) 

source.close()  

Und natürlich, wenn die Datei klein ist Sie könnten einfach das Ganze in eine Liste im Speicher lesen und stattdessen darüber iterieren.

1

Sie können die Zeilen zuerst lesen und sie in einer Liste speichern. So ist Ihre Datei nach dem Lesen geschlossen. Dann können Sie mit Ihrem Endlosschleife gehen:

lines = [] 

with open(file_source, 'rb') as f: 
    lines = f.readlines() 

while 1: 
    for line in lines: 
     print line 

Aber ist dies nicht empfohlen, wenn die Datei sehr groß ist, da alles von der Datei in den Speicher gelesen werden:

file.readlines([sizehint]):

Lesen Sie bis EOF mit readline() und geben Sie eine list zurück, die die so gelesenen Zeilen enthält.

Verwandte Themen