对于我的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 os
x = os.path.join("C:", "\\temp", "practice4.txt")
file_elem(x)
答案 0 :(得分:1)
改变这个:
return print(line_cnt, wrd_cnt, char_cnt)
到
return (line_cnt, wrd_cnt, char_cnt)
和这个
file_elem(x)
为:
print file_elem(x)
它应该像以前一样工作。 您的函数返回值。你的主程序打印出来。
答案 1 :(得分:1)
将while f is open
更改为with open(filenm,'r') as f
并删除f = open(filenm,'r')
。并移动带有块的return (line_cnt, wrd_cnt, char_cnt)
!
此外,您不需要line_cnt = len(f.readlines( ))
。您应该使用计数器并递增它。否则,文件将在for line in f
!