Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 导入模块列表_Python 3.x_Python Import - Fatal编程技术网

Python 3.x 导入模块列表

Python 3.x 导入模块列表,python-3.x,python-import,Python 3.x,Python Import,我有一些插件系统,所有插件都可以简单地添加到一个文件夹中 现在我手动导入它们,如下所示: # main.py from modules.AA import aa from modules.BB import bb from modules.CC import cc from modules.DD import dd ... 但我想让它更具动态性,这样我就可以导入列表中的所有内容了。['aa','bb','cc','dd',…] 折叠结构: main.py /modules/__init__.

我有一些插件系统,所有插件都可以简单地添加到一个文件夹中

现在我手动导入它们,如下所示:

# main.py
from modules.AA import aa
from modules.BB import bb
from modules.CC import cc
from modules.DD import dd
...
但我想让它更具动态性,这样我就可以导入列表中的所有内容了。
['aa','bb','cc','dd',…]

折叠结构:

main.py
 /modules/__init__.py
 /modules/AA.py
 /modules/BB.py
 /modules/CC.py
...
我可以把这个加进去

\uuuuu init\uuuuuuuuuuuuupy
\uuuuuuuu all\uuuuuuuuuu=['aa','bb','cc','dd']

但是我必须调用函数,比如
AA.AA()


main.py
中调用
aa()
需要什么?

,您可以在带有列表中元素的格式化字符串上使用,例如:

attributes=['aa','bb','cc','dd']
对于属性中的属性:
exec(f'from modules.{attribute.upper()}import{attribute}')
如果无法从属性名称派生模块名称,当然可以使用单独的列表(如果愿意,也可以使用
dict
):

modules=['AA','BB','CC','DD']
属性=['aa','bb','cc','dd']
对于模块,zip中的属性(模块,属性):
exec(f'from modules.{module}import{attribute}')
是的,这是真的:)但是这些文件和函数名刚刚组成了这个例子。然而,我可以做一些类似于
exec(f'from modules.{module}import{module}')