2024-09-29 22:04:06 发布
网友
外部foor循环只执行一次。我不知道为什么会这样?你知道吗
f=open("simpletextfile.txt") for r in range(1,52): for line in f.readlines(): print r
其中simpletextfile.txt包含消息This a message!!。你知道吗
simpletextfile.txt
This a message!!
在调用readlines之后,文件将用尽,因为在随后对readlines的调用中,不会读取更多行,因为所有行都已读取。然后执行内部循环,但与此无关。如果你想把这些行读52遍并打印r(我不知道为什么-但是可以),请执行以下操作
readlines
with open('simpletextfile.txt') as f: lines = f.readlines() for r in range(1, 52): for line in lines: print r
此外,尽管您在本例中只读取文件(Python将自动关闭文件),但您应该显式地.close()自己打开它,或者像上面那样用with语句将它包装起来,这样会在最后关闭它—这样就不那么草率了。你知道吗
.close()
with
当您第一次调用f.readlines()时,它将返回一个包含一个项的列表:['This a message!!']。但是当您第二次调用f.readlines()时,它将返回空列表[]。所以,当你在上面循环时,它根本不会循环,因为列表是空的。将f.readlines()赋给变量以解决问题
f.readlines()
['This a message!!']
[]
f = open("simpletextfile.txt") for r in range(1,52): lines = f.readlines() for line in lines: print r
因为一个文本文件不能读两遍。所以在第一次迭代中,它读取文件并打印“1”的次数与文件中的行数相同。当它转到r==2时,它尝试调用f.readlines(),但是由于文件已经被读取,它甚至在开始之前就停止了迭代。以此类推直到r == 51。你知道吗
r==2
r == 51
如果你多解释一下你想做什么,我们也许能更有效地帮助你。你知道吗
在调用
readlines
之后,文件将用尽,因为在随后对readlines
的调用中,不会读取更多行,因为所有行都已读取。然后执行内部循环,但与此无关。如果你想把这些行读52遍并打印r(我不知道为什么-但是可以),请执行以下操作此外,尽管您在本例中只读取文件(Python将自动关闭文件),但您应该显式地
.close()
自己打开它,或者像上面那样用with
语句将它包装起来,这样会在最后关闭它—这样就不那么草率了。你知道吗当您第一次调用
f.readlines()
时,它将返回一个包含一个项的列表:['This a message!!']
。但是当您第二次调用f.readlines()
时,它将返回空列表[]
。所以,当你在上面循环时,它根本不会循环,因为列表是空的。将f.readlines()
赋给变量以解决问题因为一个文本文件不能读两遍。所以在第一次迭代中,它读取文件并打印“1”的次数与文件中的行数相同。当它转到
r==2
时,它尝试调用f.readlines()
,但是由于文件已经被读取,它甚至在开始之前就停止了迭代。以此类推直到r == 51
。你知道吗如果你多解释一下你想做什么,我们也许能更有效地帮助你。你知道吗
相关问题 更多 >
编程相关推荐