2024-10-01 22:28:10 发布
网友
因此,我正在编写一个python脚本,在其中我需要调用另一个python脚本,在标准输出中打印几行。我想将被调用方脚本的输出存储在一个列表中,并在主脚本中处理它们。在
一种简单的方法是将结果打印到一个文件(file3)中并读取该文件,如下所示
subprocess.call("./vecdiff.py file1 file2 > file3") f = open("file3", "r")
如何将输出直接重定向到主脚本中的一些列表中?在
最简单的方法是调用^{},后者调用进程并返回其输出(或在非零返回代码上引发异常,但您仍然可以通过异常对象访问输出)。它可以轻松地处理STDOUT和STDERR(默认情况下只有STDOUT)。在
STDOUT
STDERR
手册示例:
>>> subprocess.check_output(["echo", "Hello World!"]) 'Hello World!\n'
如果您的进程正在生成大量数据,并且您希望在它运行时对其进行处理,则必须打开管道并使用communicate,如其他答案中所述。在
communicate
如下所示,将子进程的stdout和stderr重定向到PIPE,然后可以使用communicate()方法从管道中获取子进程的stdout和stderr。 “管道”是父进程和子进程之间的管道。在
from subprocess import Popen, PIPE p = Popen("./vecdiff.py file1 file2", stdout=PIPE, stderr=PIPE) output, errput = p.communicate()
如果使用subprocess.Popen(),则可以使用communicate()保存输出。例如:
subprocess.Popen()
communicate()
proc = subprocess.Popen("./vecdiff.py file1 file2", stdout=subprocess.PIPE) output = proc.communicate()
最简单的方法是调用^{} ,后者调用进程并返回其输出(或在非零返回代码上引发异常,但您仍然可以通过异常对象访问输出)。它可以轻松地处理
STDOUT
和STDERR
(默认情况下只有STDOUT
)。在手册示例:
如果您的进程正在生成大量数据,并且您希望在它运行时对其进行处理,则必须打开管道并使用
communicate
,如其他答案中所述。在如下所示,将子进程的stdout和stderr重定向到PIPE,然后可以使用communicate()方法从管道中获取子进程的stdout和stderr。 “管道”是父进程和子进程之间的管道。在
如果使用
subprocess.Popen()
,则可以使用communicate()
保存输出。例如:相关问题 更多 >
编程相关推荐