我希望程序一个接一个地打印.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:
我不明白我做错了什么,请帮忙
也提前感谢。
答案 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命令用于删除任何换行符,这些换行符将在行之间产生空格。