繁体   English   中英

UnboundLocalError:赋值前引用了局部变量“i”

[英]UnboundLocalError: local variable 'i' referenced before assignment

我不断收到这个烦人的错误,不知道如何解决它。

我试图用 for 语句打开一个 txt 文件:

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

你的文件是空的。 没有循环运行的迭代,并且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)

我想这就是你需要的:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM