Python:在EOF中避免next()错误?

时间:2014-08-12 17:51:32

标签: python

我有一个程序可以读取文件并使用next()函数跳过空行。

但是,由于文件的最后一行是空白,因此会产生异常错误。

有没有人知道解决这个问题?

当前代码:

import csv
with open(fname,'rb') as inf:
   reader = csv.reader(inf)
   for row in reader:
      while row == []:
         row = next(reader)
      do stuff

错误:

Traceback (most recent call last):
  File "./program.py", line 37, in <module>
    row = next(reader)
StopIteration

1 个答案:

答案 0 :(得分:2)

您只需在文件对象上使用filter内置函数即可。如果文件很长,itertools.ifilter将懒惰地执行此操作。例如filter(None, FILE_OBJECT)将返回一个迭代文件行的迭代,省略空行(Python中的空行是假的)。

修改

看到您的实际代码后,请使用continue语句,而不是调用next

变化:

while row == []:
    ....

为:

if row == []:
    continue