2017-09-13 68 views
0

我想实现的是这样的。 在自己的模块目录中有一系列小模块。 每个模块都提供相同的功能。 导入主程序中的所有模块。 使用模块名称调用主程序,并返回模块的值。使用模块名称作为主程序的参数调用特定模块

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命令。

有没有办法寿实现这一点 - 我不想动态加载模块,因为我想拥有这个内置的静态文件。

回答

0

你可以看一下导入模块使用sys.modules

import sys 

# parser code... 

module = args.module 
result = sys.modules[module].command() 

这样就可以导入在一开始所需要的所有模块,而动态地导入它们。当一个模块被导入时,它被添加到sys.modules字典中。