Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么嵌套for循环在Python中不起作用?_Python_For Loop - Fatal编程技术网

为什么嵌套for循环在Python中不起作用?

为什么嵌套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,但是由于

外部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,但是由于文件已经被读取,它甚至在开始之前就停止了迭代。以此类推,直到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