在循环中延迟打印文本文件中的一行接一行



我希望程序在.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:

我不明白我做错了什么请帮助

也提前感谢。

看起来你做得太过火了,你可以简单地这样做:

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

就是这样…

另外,你不需要rt打开,因为t模式是默认的。

编辑:程序的问题是您试图打印对象,因为当您编写时

f = open(...) 

with open(...) as f

f是一个文件对象,您不能对它进行迭代,但是您可以对f.readlines进行迭代,后者以文本形式返回文件中的行列表。

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

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

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

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

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

最新更新