0

对于我的 python 类,我被指示创建一个函数,该函数将读取文件并报告行数、单词数和字符数。我可以让代码工作,但是一旦我尝试将其转换为函数,它就不起作用了。怎么了?我还需要返回元组中的值。我不断收到此错误:UnboundLocalError: local variable 'line_cnt' referenced before assignment

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)
4

2 回答 2

1

更改while f is openwith 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

于 2013-06-23T19:22:47.843 回答
1

改变这个:

return print(line_cnt, wrd_cnt, char_cnt)

return (line_cnt, wrd_cnt, char_cnt)

和这个

file_elem(x)

至:

print file_elem(x)

它应该和以前一样工作。您的函数返回值。您的主程序会打印它们。

于 2013-06-23T19:15:19.497 回答