Python 子进程 : how to retrieve the standard output

标签 python redirectstandardoutput

因此,我正在编写一个 python 脚本,我需要在其中调用另一个 python 脚本,该脚本在标准输出中打印多行。我想将被调用者脚本的输出存储在一个列表中,并在主脚本中处理它们。

一种简单的方法是将结果打印到文件(file3)中并读取文件,就像这样

subprocess.call("./vecdiff.py file1 file2 > file3")

f = open("file3", "r")

如何将输出直接重定向到主脚本中的某些列表?

最佳答案

最简单的方法是调用 subprocess.check_output它调用进程并返回其输出(或在非零返回码上引发异常,但您仍然可以通过异常对象访问输出)。它可以轻松处理 STDOUTSTDERR(不过默认情况下仅处理 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/

相关文章:

vb.net - 将标准输出从进程(msxsl.exe)重定向到VB.NET中的字符串

python - 将输出重定向到文件时(使用 os.system 时)奇怪的 python 行为

python - 命令提示符导致标签。 python 2.7

python : pass variable name as argument

python - Google App Engine Bulkloader appcfg.py download_data 与数据存储区备份实体按钮

VB.net 重定向实时进程输出

python - 如何根据列表移动数据框中的值?

Python NLTK 解析错误? 'str' 对象没有属性 'check_coverage'

C# 关闭标准输出