Skip to main content
 首页 » 编程设计

Python 子进程 : how to retrieve the standard output

2025年05月04日19落叶无声

因此,我正在编写一个 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 ,如其他答案中所述。