使用模块名称作为主程序的参数调用特定模块
问题描述:
我想实现的是这样的。 在自己的模块目录中有一系列小模块。 每个模块都提供相同的功能。 导入主程序中的所有模块。 使用模块名称调用主程序,并返回模块的值。使用模块名称作为主程序的参数调用特定模块
import worker_modules
parser = argparse.ArgumentParser(description='download a file through cURL')
parser.add_argument(
'module', help='module to work on')
args = parser.parse.args()
module = args.module
result = module.command(extra args not shown)
结果失败,因为它认为模块没有attr命令。
有没有办法寿实现这一点 - 我不想动态加载模块,因为我想拥有这个内置的静态文件。
答
你可以看一下导入模块使用sys.modules
import sys
# parser code...
module = args.module
result = sys.modules[module].command()
这样就可以导入在一开始所需要的所有模块,而动态地导入它们。当一个模块被导入时,它被添加到sys.modules
字典中。