使用字典来执行对象的方法

时间:2018-05-01 08:40:35

标签: python python-3.x pandas

我正在尝试执行以下代码

def get_data(full_file_path, **kwargs):

    file_extension = full_file_path.split(".")[-1]

    method = {"data":read_table(full_file_path, **kwargs),
              "csv":read_csv(full_file_path, **kwargs)}
    data = pd.method.get(file_extension)

    return data

我收到错误:

File "C:\Users\code\src\data\make_dataset.py", line 7, in get_data
    method = {"data":read_table(full_file_path, **kwargs),
NameError: name 'read_table' is not defined

是否有人知道是否可以根据字典选择对象的方法?

提前致谢。

ps:是的,我已经“转发pandas as pd

1 个答案:

答案 0 :(得分:0)

Python中对函数的引用就像普通名称一样。您的代码中的问题是您实际上正在尝试调用字典定义中的函数。我已在此版本的函数中将查找拆分为几个步骤以明确说明:

def get_data(full_file_path, **kwargs):

    file_extension = full_file_path.split(".")[-1]

    method = {"data": pd.read_table,
              "csv": pd.read_csv}
    read = method[file_extension]

    data = read(full_file_path, **kwargs)

    return data