Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有一种快速的方法将excel文档与python中的函数相匹配?_Python_Excel_Python 2.7 - Fatal编程技术网

有没有一种快速的方法将excel文档与python中的函数相匹配?

有没有一种快速的方法将excel文档与python中的函数相匹配?,python,excel,python-2.7,Python,Excel,Python 2.7,我知道这个问题很模糊,我很难想出更好的标题 基本上,我拥有的是一个充满大约90个不同函数的模块,所有这些函数都有不同的名称,并且大部分都有稍微不同的代码。我从excel表格中导入了大量数据,需要一个函数来匹配每个数据 当前,我重命名每个excel工作表,然后在读取excel文件时在getattr中使用该字符串调用正确的函数。我的脚本在文件夹中循环并检查每个文件 除了使用过多的try-except语句之外,有没有一种方法可以做到不必重命名文件,也不必try/except 我曾考虑过在excel表格

我知道这个问题很模糊,我很难想出更好的标题

基本上,我拥有的是一个充满大约90个不同函数的模块,所有这些函数都有不同的名称,并且大部分都有稍微不同的代码。我从excel表格中导入了大量数据,需要一个函数来匹配每个数据

当前,我重命名每个excel工作表,然后在读取excel文件时在getattr中使用该字符串调用正确的函数。我的脚本在文件夹中循环并检查每个文件

除了使用过多的try-except语句之外,有没有一种方法可以做到不必重命名文件,也不必try/except

我曾考虑过在excel表格中搜索标题,然后在标题中搜索我需要的列名,但这似乎效率很低,而且同一列类型有很多不同的名称,例如,体积可以是数量、数量、体积、体积、标称等

我并不是真的期望有更好的方法来做到这一点,但希望如此

这就是我调用的函数之一的样子:

 def test(path):
     df = pd.read_excel(path, sheetname=1, header=19, parse_cols='A, B, D, G, H')
     df = df.rename(columns={'ItemList': 'item', 'Volume': 'vol', 'Price': 'price', 'Date': 'date', 'Commish': 'com'})
     df = df.dropna()
     return df
我运行脚本,它读取os.listdirfpath中文件名的文件夹

我从文件名中去掉文件类型,使test.xlsx成为test,然后将其传递到函数中

 def dfReturn(path, excelName):
     func = getattr(function_module, excelName)
     if func:
         df = func(path)
     return df

我想做的是摆脱getattr,或者至少使其不必命名为任何特定的文件。

如果不看到代码,很难回答这个问题。首先,为什么要使用try/except块?如果你不需要,就把它们拿出来。为什么要重命名该文件?如果您的每个函数都在一个特定的文件名上运行,请重写它们,以便它们采用一个文件名参数。我不这么认为,这只是我在考虑的问题。假设您调用脚本并将excel文件作为参数传递给process,您也可以将适当的函数作为参数传递……我将添加一些代码和我正在调用的函数的示例。我正试图使它更加自动化。@Kevin我最初计划只使用通用文件名并与之匹配。问题是,excel文件的名称一直在更改。