导入并 运行 文件夹中的所有模块
Import and run all modules in folder
有没有办法导入和 运行 文件夹中的所有 .py 文件?
基本上我认为 pytest 是如何进行测试发现的。
我似乎想从一个文件路径导入一个列表,然后在每个模块上遍历调用 .main(*args) 的列表。
它还需要 python 2 和 3 兼容
例子
- start.py
- 事情/
- mod1.py
- 主要(*args):
- mod2.py
- 主要(*args):
您可以使用 importlib
。假设以下简单目录结构:
- a.py
- b.py
- c.py
a.py
和 b.py
包含以下简单函数:
def main(name):
print name
在 c.py
中,我们可以遍历我们的目录并使用 importlib.import_module
导入每个文件。我们必须确保使导入的模块全局可访问,否则它们将仅在 for 循环中是本地的。
c.py
:
import importlib
files = ['a', 'b']
for f in files:
globals()[f] = importlib.import_module(f)
a.main('adam')
b.main('ben')
运行 c.py
产生以下输出:
adam
ben
有没有办法导入和 运行 文件夹中的所有 .py 文件?
基本上我认为 pytest 是如何进行测试发现的。
我似乎想从一个文件路径导入一个列表,然后在每个模块上遍历调用 .main(*args) 的列表。
它还需要 python 2 和 3 兼容
例子
- start.py
- 事情/
- mod1.py
- 主要(*args):
- mod2.py
- 主要(*args):
- mod1.py
您可以使用 importlib
。假设以下简单目录结构:
- a.py
- b.py
- c.py
a.py
和 b.py
包含以下简单函数:
def main(name):
print name
在 c.py
中,我们可以遍历我们的目录并使用 importlib.import_module
导入每个文件。我们必须确保使导入的模块全局可访问,否则它们将仅在 for 循环中是本地的。
c.py
:
import importlib
files = ['a', 'b']
for f in files:
globals()[f] = importlib.import_module(f)
a.main('adam')
b.main('ben')
运行 c.py
产生以下输出:
adam
ben