类中的Python函数-NameError:函数未定义

时间:2018-08-08 22:05:08

标签: python python-3.x class nameerror

我只是刚刚开始在python中使用类,因此无法弄清楚如何解决这个大概简单的错误。我有一个基本上可以整理多个csv文件,对数据进行排序和清理并输出完成列表的类,如下所示:

class CollateCSV():
    def __init__(self, input_dir="", file_list="", output=False):
        # initialises some global variables

    def read_file_list(self):
        #reads a csv file of already "dealt with" files
        return x #list of filenames

    def list_files_to_read(self, show=False, perm=True):
        #gives list of csv files yet to be cleaned - the ones the program will actually import and read
        return files_to_read


    def sort_list(self, unsorted_list):
        #sorts a list of OrderedDict by multiple keys
        return sorted_list

    def import_sort(self):
        #reads each CSV file, cleans it, passes it to sort_list function and returns cleaned & sorted list of OrderedDict
        return sort_list(x)

    def return_final_list(self):
        #does some things relating to logging if self.output == True. But used mainly as single easy place to return the final sorted & cleaned list of OrderedDict
        return import_sort()

我设置项目的方式,此代码与主代码位于单独的文件中,因此我将其作为模块导入。因此,我知道代码本身就像在运行下面的代码时一样工作。我已经修复了一些错误,这些错误在上面的代码中始终指示丢失的变量或语法错误等。

from convert import CollateCSV
x = CollateCSV("./csv_files", "./file_list.csv", output=False)

print(x.list_files_to_reas())

我遇到的问题是,当我运行上面的代码时,我知道自己会犯一个错误:

for file in list_files_to_read(show=False, perm=True):
NameError: name 'list_files_to_read' is not defined

我尝试过在Collat​​eCSV类中移动函数,并尝试在与第一个文件相同的文件中执行第二个代码段,但仍然会遇到相同的错误。有人可以就我在python中做错什么给出一些建议吗?谢谢。

2 个答案:

答案 0 :(得分:0)

在for循环中,您需要编写

for file in x.list_files_to_read(show=False, perm=True):
    # ...

因为x是您的CollatesCSV实例

答案 1 :(得分:-2)

您可能在包含类文件的目录中缺少__init__.py文件。

What is __init__.py for?