2016-09-11 1 views
1

Ich habe eine Datei mit 4 Website-Namen wie unten gezeigt. Ich möchte jeden Website-Namen nacheinander in bestimmten Intervallen ausdrucken.Wie wird eine Datei Zeile für Zeile in bestimmten Abständen kontinuierlich mit Python gedruckt?

sample.txt:

facebook.com 
gmail.com 
test.com 
yahoo.com 

Ich habe mit folgendem Code versucht. Aber seine Print-Website nennt nur einmal. Ich wollte fortlaufend auf Websitenamen.

from time import sleep 

while True: 
    with open ("sample.txt", 'r') as test: 
     while True: 
      print test.readline() 
      sleep(3) 
    pass 

Erwartete Ausgabe:

facebook.com 
gmail.com 
test.com 
yahoo.com 
facebook.com 
gmail.com 
test.com 
yahoo.com 
facebook.com 
gmail.com 
test.com 
yahoo.com 
facebook.com 
gmail.com 
test.com 
yahoo.com 
. 
. 
. 

Kann ich Hilfe bekommen, dieses Problem zu beheben?

Danke.

Antwort

1

Das Problem ist, dass nach readline() das Ende der Datei erreicht, wird es weiterhin leere Zeilen zurück. Sie brauchen etwas, das die Schleife endet, so dass Sie am Anfang der Datei von vorn anfangen können:

from time import sleep 

while True: 
    with open ("sample.txt", 'r') as test: 
     for line in test: 
      print line.rstrip() 
      sleep(3) 

Wenn Sie wirklich verwenden readline wollen, dann müssen Sie für das Ende der Datei testen. Während readline aktuelle Zeilen liest, wird immer mindestens ein Zeilenumbruchzeichen zurückgegeben. Wenn es nichts zurückgibt, hat es das Ende der Datei erreicht. Also:

+1

Danke für deine Antwort .. upvote für rstrip() – rcubefather

1

Sie müssen nur eine Schleife über jede Zeile:

for line in test: 
    print line 

statt, während True:

Complete:

from time import sleep 
with open ("sample.txt", 'r') as test: 
    for line in test 
     print line 
     sleep(3) 
+0

Danke für Ihre Antwort .... seine Arbeit ... – rcubefather

+0

Sie sind willkommen :) Können Sie akzeptieren? – Thalmann

1

Ihr Dateiobjekt, das eine Iterator zurückgibt nach erschöpft wurde die erste Runde der Anrufe zu readline(). Sie sollten stattdessen die gesamte Datei in eine Liste einlesen und diese Liste nacheinander durchlaufen.

from time import sleep 


with open ("sample.txt") as test: 
    lines = test.readlines() # read all lines into list 

while True: 
    for line in lines: 
     print line 
     sleep(3) 
Verwandte Themen