Python subprocess:如何检索标准输出
Python subprocess:如何检索标准输出
所以,我正在编写一个Python脚本,需要调用另一个Python脚本,该脚本在标准输出中打印多条信息。我想将被调用的脚本的输出存储在一个列表中,并在主脚本中进行处理。
一种简单的方法是将结果打印到文件(file3)中,然后读取文件,就像这样:
subprocess.call("./vecdiff.py file1 file2 > file3") f = open("file3", "r")
我如何将输出直接重定向到我的主脚本中的一些列表中?
admin 更改状态以发布 2023年5月20日
最简单的方法是调用subprocess.check_output
来调用进程并返回其输出结果(或在非零返回代码时引发异常,但仍然可以通过异常对象访问输出结果)。它可以轻松处理STDOUT
和STDERR
(默认情况下仅处理STDOUT
)。
手册中的示例:
>>> subprocess.check_output(["echo", "Hello World!"]) 'Hello World!\n'
如果您的进程正在生成大量数据并且您希望在它运行时进行处理,则必须打开管道并使用其他答案中描述的communicate
进行处理。