从包含函数的文件集合调用Python函数

从包含函数的文件集合调用Python函数,python,function,Python,Function,我正在做一个项目,在这个项目中,用户可以在一个文件中定义函数(对Redis DB执行操作,尽管这可能无关紧要)。这些文件将与许多其他类似的文件放在一个文件夹中。考虑构建一个作用于Redis db的函数库,类似于自定义Redis命令。就添加新函数的能力而言,它可能类似于自制 正如当前编写的那样,使用脚本的人将提供他们想要运行的函数的字符串表示,脚本将找到它并运行它。我希望主脚本能够遍历此库目录中的文件,并使每个文件中的所有函数都可用于主脚本 我知道如何从函数名字符串调用函数。我无法理解的是如何遍历

我正在做一个项目,在这个项目中,用户可以在一个文件中定义函数(对Redis DB执行操作,尽管这可能无关紧要)。这些文件将与许多其他类似的文件放在一个文件夹中。考虑构建一个作用于Redis db的函数库,类似于自定义Redis命令。就添加新函数的能力而言,它可能类似于
自制


正如当前编写的那样,使用脚本的人将提供他们想要运行的函数的字符串表示,脚本将找到它并运行它。我希望主脚本能够遍历此库目录中的文件,并使每个文件中的所有函数都可用于主脚本

我知道如何从函数名字符串调用函数。我无法理解的是如何遍历此目录中的文件并导入函数或使函数可供调用

现在,我只让它使用如下代码处理主脚本中定义的函数,
command
是从命令行传递的函数名字符串:

possibles = globals().copy()
possibles.update(locals())
custom_method = possibles.get(command)
if custom_method:
    print custom_method(r)
我脑子里还有其他一些问题,比如我是否应该强制所有库方法都存在于一个具有相同文件名的类中?这会不会让我想做的事情变得更容易?也许
imp
模块和
find_模块
可以提供帮助

Twitter上的一位追随者提出了这个解决方案:

该模块是您与
os
os.path


加载文件后,可以使用模块和/或
dir()
建立可用函数/类等的列表。

“提供要运行的函数的字符串表示形式,脚本将找到并运行它。”为什么?为什么不直接导入并命名函数而不用字符串表示
from library.filename导入函数
,然后使用该函数即可。为什么要处理函数名的字符串版本?@S.Lott,因为这是一个命令行应用程序,用户在其中执行类似于:
>mytool custom_command“custom arguments”的操作
而该
自定义_命令
位是我必须查找并运行的函数的名称。为什么不在Python中的
>
提示符下简单地执行此操作?您可以确保默认导入(使用中的自定义挂钩)。然后他们可以简单地键入
mytool(自定义命令(自定义参数))
,而不需要额外的开销或处理,因为这不是为Python用户设计的。这是我为了解命令行但对Python或Redis一无所知的最终用户开发的工具。基本上,需要运行一系列定制redis命令并对结果进行分析的人有时会以自动化的方式进行,他们不需要了解Python。语法与您的语法几乎完全相同,但使用了()。您可以提供一个环境,在这个环境中,他们可以简单地键入(秘密地)为他们定义的类或函数的命令。