因此,我正在编写一个 python 脚本,我需要在其中调用另一个 python 脚本,该脚本在标准输出中打印多行。我想将被调用者脚本的输出存储在一个列表中,并在主脚本中处理它们。
一种简单的方法是将结果打印到文件(file3)中并读取文件,就像这样
subprocess.call("./vecdiff.py file1 file2 > file3")
f = open("file3", "r")
如何将输出直接重定向到主脚本中的某些列表?
最佳答案
最简单的方法是调用 subprocess.check_output
它调用进程并返回其输出(或在非零返回码上引发异常,但您仍然可以通过异常对象访问输出)。它可以轻松处理 STDOUT
和 STDERR
(不过默认情况下仅处理 STDOUT
)。
手册中的示例:
>>> subprocess.check_output(["echo", "Hello World!"])
'Hello World!\n'
如果您的进程正在生成大量数据并且您希望在其运行时对其进行处理,则必须打开管道并使用 communicate
,如其他答案中所述。
关于Python 子进程 : how to retrieve the standard output,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15706733/