无法运行函数,python

时间:2013-06-23 19:13:09

标签: python function

对于我的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)

2 个答案:

答案 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

之前读取