将目录中的所有文件作为模块导入,并调用类方法

时间:2015-04-12 18:55:59

标签: python

我有一个包含子目录中信号处理器的模块。我想设置一些东西,以便主文件(在该子目录之上)可以导入子目录中的所有python文件,并在其中调用已知函数。这样输入信号可以通过该目录中的每个信号处理器运行。有没有一种干净的方法在Python中执行此操作?

1 个答案:

答案 0 :(得分:2)

假设文件树是:

main.py
processors/
processors/proc1.py
processors/proc1.py

并且每个 proc 模块都有一个方法:

def process():
    # Do something

然后,您可以使用 main.py 中的以下代码:

import pkgutil
import processors

if __name__ == '__main__':
    modules = []
    for loader, name, is_pkg in pkgutil.walk_packages(processors.__path__):
        modules.append(loader.find_module(name).load_module(name))

    # Later in the code when processing is required:
    for module in modules:
        module.process()

此代码缺少输入检查,例如每个模块都有 process()方法。