为什么嵌套for循环在Python中不起作用?
外部foor循环只执行一次。我无法发现为什么会发生这种情况为什么嵌套for循环在Python中不起作用?,python,for-loop,Python,For Loop,外部foor循环只执行一次。我无法发现为什么会发生这种情况 f=open("simpletextfile.txt") for r in range(1,52): for line in f.readlines(): print r 其中simpletextfile.txt包含消息This a message 因为一个文本文件不能读取两次。因此,在第一次迭代中,它读取文件并打印1次,打印次数与文件中的行数相同。当它转到r==2时,它尝试调用f.readlines,但是由于
f=open("simpletextfile.txt")
for r in range(1,52):
for line in f.readlines():
print r
其中simpletextfile.txt包含消息This a message 因为一个文本文件不能读取两次。因此,在第一次迭代中,它读取文件并打印1次,打印次数与文件中的行数相同。当它转到r==2时,它尝试调用f.readlines,但是由于文件已经被读取,它甚至在开始之前就停止了迭代。以此类推,直到r==51
如果你能更多地解释你想做什么,我们也许能更有效地帮助你 调用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会自动为您关闭该文件,但您应该显式地自己关闭它,或者像上面那样用with语句包装它,这将在最后关闭它-它不那么草率 当您第一次调用f.readlines时,它将返回一个包含一项的列表:[“这是一条消息!!”]。但是,当您第二次调用f.readlines等时,它将返回空列表[]。因此,当您循环它时,它根本不会循环,因为列表是空的。将f.readlines指定给变量以解决您的问题
f = open("simpletextfile.txt")
for r in range(1,52):
lines = f.readlines()
for line in lines:
print r