在Python脚本中,运行目录中的所有Python脚本并流输出

时间:2019-04-12 18:48:37

标签: python

我的文件结构如下:

runner.py
scripts/
    something_a/
        main.py
        other_file.py
    something_b/
        main.py
        anythingelse.py
    something_c/
        main.py
    ...

runner.py在运行scripts/时应查看main.py中的所有文件夹。

目前,我正在通过subprocess.check_output实现这一目标。它可以工作,但是其中一些脚本需要很长时间才能运行,我看不到任何进展。该过程完成后,它将打印所有内容。

我希望找到一种解决方案,使某些事情可以轻松完成:

  

1)传输输出,而不是在最后全部获取

     

2)不   禁止一次运行多个脚本

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

1 个答案:

答案 0 :(得分:0)

您可以使用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)