Python 如何递归地导入目录中的每个文件并在每个文件中运行函数?

Python 如何递归地导入目录中的每个文件并在每个文件中运行函数?,python,python-3.x,Python,Python 3.x,本质上,我试图创建一个扩展系统,其中每个插件通过文件中的相应函数钩住重要函数。我需要一种运行这个函数并获取返回值的方法,只需在“plugins”目录中循环 我可以这样做吗?您可以使用\uuuu import\uuuu 因此,您只需要迭代文件夹以查找py文件(而不是pyc)并导入它们 for root, dirs, files in os.walk(src_path): for f in files: if f.endswith('.py'): m

本质上,我试图创建一个扩展系统,其中每个插件通过文件中的相应函数钩住重要函数。我需要一种运行这个函数并获取返回值的方法,只需在“plugins”目录中循环


我可以这样做吗?

您可以使用
\uuuu import\uuuu

因此,您只需要迭代文件夹以查找py文件(而不是pyc)并导入它们

for root, dirs, files in os.walk(src_path):
    for f in files:
        if f.endswith('.py'):
            m = __import__(f)
m
现在将是模块的实例,因此如果在其下有一个名为
my_func
的函数,则可以执行以下操作:

m.my_func()

或者,如果函数名为字符串:


getattr(m,'my_func')()(

虽然它是为Python 2编写的,但您可能会发现它很有用。实际上,我对此有一个问题,当我尝试运行函数时,它会说“模块'插件'没有attritube'函数'”。知道为什么会发生这种情况吗?python似乎找到了您的模块,但没有找到函数(您是否实际调用了函数
function
?),请尝试在模块中定义其他内容,看看它是否可以访问它们,或者添加一些代码,这样我就可以帮助您了