从Python脚本中,运行目录和流输出中的所有Python脚本

从Python脚本中,运行目录和流输出中的所有Python脚本,python,Python,我的文件结构如下所示: runner.py scripts/ something_a/ main.py other_file.py something_b/ main.py anythingelse.py something_c/ main.py ... runner.py应该查看位于那里的运行main.py的scripts/中的所有文件夹 现在,我通过子流程来实现这一点。检查输出。

我的文件结构如下所示:

runner.py
scripts/
    something_a/
        main.py
        other_file.py
    something_b/
        main.py
        anythingelse.py
    something_c/
        main.py
    ...
runner.py
应该查看位于那里的运行
main.py
scripts/
中的所有文件夹

现在,我通过
子流程来实现这一点。检查输出。这是可行的,但有些脚本需要很长时间才能运行,我看不到任何进展;它会在流程完成后打印所有内容

我希望找到一个解决方案,使两件事可以轻松完成:

1) 流化输出,而不是在最后获取所有输出

2) 没有 禁止同时运行多个脚本


这可能吗?我见过很多从另一个脚本运行Python脚本的解决方案都需要了解另一个脚本的名称/位置。如果有帮助的话,我还可以强制所有的
main.py
都有一个特定的功能。

您可以使用Popen循环遍历每个文件,并将其内容写入多个日志文件。然后,您可以在填充每个文件时实时读取这些文件。:)

您希望如何将输出转换为更可读的格式,因为可读性的原因,这有点棘手。您可以使用Popen创建另一个脚本来读取这些日志文件,并决定如何以可理解的方式读回这些信息

""" Use the same command as you would do for check_output """
cmd = ''

for filename in scriptList:
   log = filename + ".log"
   with io.open(filename, mode=log) as out:
        subprocess.Popen(cmd, stdout=out, stderr=out)

我会考虑使用线程库(),这样可以同时运行多个脚本,如果其中一个脚本挂起,则不会影响其余脚本;或者,如果不适合,则在子流程调用上使用超时,在特定时间后停止作业。看,你试过了吗?您需要标准件和/或标准件吗?另外,您可以添加到目前为止您所拥有的吗?子流程的主要问题不是它花费的时间太长或者我不能并行化它。只是我想流式处理子流程似乎不容易支持的流程。请在此处查看如何流式处理子流程的输出: