当我运行我的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
答案 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