对于我的python类,我被指示创建一个函数,该函数将读取文件并报告行数,单词数和字符数。我可以使代码正常工作,但是一旦尝试将其转换为函数,它将无法正常工作。怎么了?我还需要返回一个元组中的值。我不断收到此错误:UnboundLocalError:赋值之前引用了本地变量'line_cnt'def file_elem(filenm): f = open(filenm,'r') wrd_cnt = 0 char_cnt = 0 line_len = 0 while f is open: line_cnt = len(f.readlines( )) for line in f: f_lines = line.split() wrd_cnt += len(f_lines) no_spaces = ''.join(line.split()) char_cnt += len(no_spaces) return print(line_cnt, wrd_cnt, char_cnt)import osx = os.path.join("C:", "\\temp", "practice4.txt")file_elem(x)
2 回答

婷婷同学_
TA贡献1844条经验 获得超8个赞
更改while f is open
为with open(filenm,'r') as f
并删除f = open(filenm,'r')
。并移动return (line_cnt, wrd_cnt, char_cnt)
with块里面!
另外,您不需要line_cnt = len(f.readlines( ))
。您应该使用一个计数器并将其递增。否则,文件将在for line in f
!之前读取。

蝴蝶刀刀
TA贡献1801条经验 获得超8个赞
更改此:
return print(line_cnt, wrd_cnt, char_cnt)
到
return (line_cnt, wrd_cnt, char_cnt)
和这个
file_elem(x)
到:
print file_elem(x)
它应该和以前一样工作。您的函数返回值。您的主程序将它们打印出来。
添加回答
举报
0/150
提交
取消