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