我有一个包含4个网站名称的文件,如下所示。我想在特定的时间间隔内连续打印每个网站名称。
sample.txt的:
facebook.com
gmail.com
test.com
yahoo.com
我尝试使用以下代码。但它的印刷网站只命名一次。我想继续网站名称。
from time import sleep
while True:
with open ("sample.txt", 'r') as test:
while True:
print test.readline()
sleep(3)
pass
预期产出:
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
.
.
.
我可以帮助解决这个问题吗?
感谢。
答案 0 :(得分:1)
你只需要遍历每一行:
for line in test:
print line
而不是True:
达成:
from time import sleep
with open ("sample.txt", 'r') as test:
for line in test
print line
sleep(3)
答案 1 :(得分:1)
在第一轮readline()
调用后,返回迭代器的文件对象已耗尽。您应该将整个文件读入列表并连续迭代该列表。
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)
答案 2 :(得分:1)
问题是,在readline()
到达文件末尾后,它将继续返回空行。你需要一些结束循环的东西,以便你可以从文件的开头重新开始:
from time import sleep
while True:
with open ("sample.txt", 'r') as test:
for line in test:
print line.rstrip()
sleep(3)
如果你真的想使用readline
,那么你需要测试文件的结尾。虽然readline
正在读取实际行,但它始终会返回至少一个换行符。如果它什么也没有返回,那么它已到达文件的末尾。因此:
from time import sleep
while True:
with open ("sample.txt", 'r') as test:
while True:
line = test.readline()
if not line:
break
print line.rstrip()
sleep(3)