如何从目录中的所有模块动态导入所有变量并将其放入列表中

  • 本文关键字:列表 变量 导入 模块 动态 python
  • 更新时间 :
  • 英文 :


我想从目录中的所有模块导入所有变量(最好将它们放在列表中(。

我有以下结构

Foo/
bar1.py
bar2.py
bar3.py

模块包含

# bar1.py
baz1 = "spam"
# bar2.py
baz2 = "chicken"
# bar3.py
baz3 = "milk"

如何使用所有变量baz1baz2baz3形成列表,而不显式导入它们并显式将它们添加到列表中?换句话说,在添加具有另一个变量的另一个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

最新更新