Python - 在读取文件时不起作用的嵌套循环

时间:2013-02-08 16:24:47

标签: python text iteration

这个嵌套循环在阅读列表时工作正常:

list = [1,2,3,4,5]
num = 0
while num < 5:
  for i in list:
     print(i)
     num += 1

此循环将打印列表中的所有元素。问题是它在阅读文本文件时根本不起作用。它不是打印前5行文本,而是通读所有文本并打印出来。

f = open(r'C:\Users\Me\Python\bible.txt')
num = 0
while num < 50:
   for line in f:
      print(line)
      num += 1

我只能假设每次迭代后num变量都没有增加,是否有原因,是否有解决方案?

2 个答案:

答案 0 :(得分:2)

代码

for line in f:
    print line
    num += 1

循环遍历文件中的所有行。同时它将num增加一个。所以在for循环结束时num将等于文件中的行数,可能大于50,所以它将从while循环中退出。

使用你的风格你应该写:

for line in f:
   print line
   num += 1
   if num > 50: break

第一个代码也有同样的问题。如果要在一个维度中循环一个结构,为什么需要两个循环?您的代码不是非常pythonic,例如,您应该将它们重写为:

list = [1,2,3,4,5]
for i in list:
   print i

for i,line in enumerate(f):
    print line
    if i > 50: break

答案 1 :(得分:1)

即使在第一个示例中,我也不相信您的代码有效。由于您编写了两个嵌套循环,因此在检查外部循环终止之前,内部循环总是完成。我建议放下外弯针并插入类似

的东西
  

如果num> 50:       破

进入内循环。