我想从目录中的所有模块导入所有变量(最好将它们放在列表中(。
我有以下结构
Foo/
bar1.py
bar2.py
bar3.py
模块包含
# bar1.py
baz1 = "spam"
# bar2.py
baz2 = "chicken"
# bar3.py
baz3 = "milk"
如何使用所有变量baz1
、baz2
、baz3
形成列表,而不显式导入它们并显式将它们添加到列表中?换句话说,在添加具有另一个变量的另一个barx.py
模块之后,我希望该变量隐式加载到列表中。
import os
import importlib
my_path = 'Foo'
lst = [f.rstrip('.py') for f in os.listdir(my_path) if f.endswith('.py')]
all_imported_data = dict()
for item in lst:
module = importlib.import_module(f'{my_path}.{item}')
all_imported_data.update({k: v for k, v in module.__dict__.items() if not k.startswith('_')})
print(all_imported_data)
importlib的文档:https://docs.python.org/3/library/importlib.html#importlib.import_module