处理文件时,如何获取当前行号?

时间:2011-05-10 03:42:06

标签: python line-numbers

当我使用下面的结构循环文件时,我也想要当前的行号。

    with codecs.open(filename, 'rb', 'utf8' ) as f:
        retval = []
        for line in f:
            process(line)

是否存在类似于此的东西?

    for line, lineno in f:

2 个答案:

答案 0 :(得分:10)

for lineno, line in enumerate(f, start=1):

如果您遇到的Python版本不允许您设置enumerate的起始编号(此功能已在Python 2.6中添加),并且您希望使用此功能,那么最佳解决方案可能是提供一个实现,而不是调整内置函数返回的索引。这是一个实现。

def enumerate(iterable, start=0):
    for item in iterable:
        yield start, item
        start += 1

答案 1 :(得分:1)

如果您使用的是Python2.6 +,那么kindall的答案将涵盖它

Python2.5及更早版本不支持enumertate的第二个参数,所以你需要使用这样的东西

for i, line in enumerate(f):
    lineno = i+1

for lineno, line in ((i+1,j) for i,j in enumerate(f)):

除非您确定第一行是数字0