导入并 运行 文件夹中的所有模块

Import and run all modules in folder

有没有办法导入和 运行 文件夹中的所有 .py 文件?

基本上我认为 pytest 是如何进行测试发现的。

我似乎想从一个文件路径导入一个列表,然后在每个模块上遍历调用 .main(*args) 的列表。

它还需要 python 2 和 3 兼容

例子

您可以使用 importlib。假设以下简单目录结构:

  • a.py
  • b.py
  • c.py

a.pyb.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