UnboundLocalError:赋值前引用的局部变量'i'

时间:2017-11-09 20:34:22

标签: python

当我运行我的python代码

时,我遇到了这个错误
def file_len(fname):
    with open(fname) as f:
        for i, l in enumerate(f):
            pass
    return i + 1

完整脚本位于此处:https://pastebin.com/raw/NyeBR78w

2 个答案:

答案 0 :(得分:3)

您的文件为空。没有循环的迭代运行,并且永远不会分配i

您需要处理空文件案例。对于不支持len的迭代中的项目计数,我通常会使用sum(1 for elem in thing)

def file_line_count(fname):
    with open(fname) as f:
        return sum(1 for line in f)

答案 1 :(得分:0)

我想这就是你需要的:

def file_len(fname):
    counter = 0
    with open(fname) as f:
        for i, l in enumerate(f):
            counter += 1
    return counter

更优雅的版本:

def file_len(fname):
    with open(fname) as f:
        length = len(f.readlines())
    return length