繁体   English   中英

如何使用python连续在特定的时间间隔内逐行打印文件?

[英]How to print a file line by line in specific interval continuously using python?

我有一个包含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
.
.
.   

我可以帮忙解决这个问题吗?

谢谢。

你只需要遍历每一行:

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)

在第一轮调用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)

问题是,在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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM