外部foor循环仅执行一次。我无法检测出为什么会被遮挡的问题?
f=open("simpletextfile.txt")
for r in range(1,52):
for line in f.readlines():
print r
其中simpletextfile.txt
包含消息This a message!!
。
答案 0 :(得分:4)
因为您不能两次阅读文本文件。因此,在第一次迭代中,它将读取文件并打印“ 1”,其次数与文件中的行数相同。转到r==2
时,它将尝试调用f.readlines()
,但是由于已经读取了文件,因此它甚至在启动之前都会停止迭代。依此类推,直到r == 51
。
如果您进一步说明您要做什么,我们可能会更有效地提供帮助。
答案 1 :(得分:3)
调用readlines
后文件已用尽,因为在随后的readlines
调用中,由于已读取所有行,因此不会读取更多行。然后执行内部循环,但与该循环无关。如果您想阅读52行并打印r(我不知道为什么,但是可以),请执行以下操作
with open('simpletextfile.txt') as f:
lines = f.readlines()
for r in range(1, 52):
for line in lines:
print r
此外,尽管在此示例中您仅读取文件(Python会自动为您关闭文件),但是您应该自己明确.close()
或将其包裹在with
语句中,如上所述,最终将其关闭-不太草率。
答案 2 :(得分:1)
第一次调用f.readlines()
时,它将返回一个列表,其中包含一项:['This a message!!']
。但是,当您第二次调用f.readlines()
时,依此类推,它将返回空列表[]
。因此,当您对其进行循环时,由于列表为空,因此它根本不会循环。将f.readlines()
分配给变量以解决您的问题
f = open("simpletextfile.txt")
for r in range(1,52):
lines = f.readlines()
for line in lines:
print r