在循环中以延迟方式从文本文件中逐行打印一行

时间:2014-09-24 09:16:04

标签: python loops time

我希望程序一个接一个地打印.txt中的行

import os
import time
with open('e.txt','rt') as f:

    #for line  in f:  # for direct input
    line = f.readline()
    m =  str(line)
    print 'd', m
    time.sleep(2)

    line = f.readline()
    g = str(line)
    print 'f', g

正如你所看到的那样有两条线因此以这种方式打印它们工作正常,但当我想使用循环时

 with open('e.txt','rt') as f:
    for i, l in enumerate(f):
                pass
        d = i + 1
        while d > 0 :
            #with open('e.txt','rt') as f:
            pos = f.tell();
            f.seek(pos,0);
            line=f.readline();
            m = str(line);
            time.sleep(1)
            print 't: ', m
            d -= 1

输出

t:

t:

我不明白我做错了什么,请帮忙

也提前感谢。

3 个答案:

答案 0 :(得分:1)

看起来你做得太过分了,你可以这么简单地做到这一点:

import time
f = open('e.txt','r')
for line in f.readlines():
    print(line)
    time.sleep(1)

就是这样......

P.S。你不需要在开放时使用rt,因为t模式是默认的。

编辑:您的程序问题在于您尝试打​​印对象,因为在您编写时

f = open(...) 

with open(...) as f

f是一个文件对象,你不能迭代它,你可以迭代f.readlines,它返回文件中的行列表作为文本。

答案 1 :(得分:0)

打开文件,迭代文件对象。

file = open( 'e.txt', 'r')
for line in file:
    print(line)

答案 2 :(得分:0)

“我希望程序一个接一个地打印.txt中的行”,其最简单的形式对应于:

with open('e.txt','r') as f:
     for line in f:
        print(line.strip())

延迟是一个选择问题,而不是解决原始请求的必要条件。 .strip命令用于删除任何换行符,这些换行符将在行之间产生空格。