在python中运行一个子进程,并以“实时”显示输出并将其保存到变量中

问题描述 投票:1回答:2

我希望能够从python代码运行一个子进程,并且都能实时看到输出,一旦进程完成,就会在变量中输出

现在我做两件事之一

1)使用subprocess.call运行子进程在这种情况下,我实时获得输出,但我最后没有变量中的输出(我想解析它并从中提取值)

2)使用subprocess.check_output运行子进程在这种情况下,我有一个变量的输出,但如果我想看到它,那么我必须“手动”打印它

有没有办法让两件事“在一起”?

希望很清楚,如果需要,我可以添加我的代码

谢谢 !!!

编辑:

这是我目前的代码

enter image description here

我添加了一个超时可选参数(默认值为1200并且还处理shell(由于某些原因,在Linux中工作的相同命令在Windows中不起作用,如果我没有shell = True)“mode”参数是一个我用来区分我想要“实时”输出的情况,我不需要解析它和其他情况

我想知道是否有更清洁,更好的方法来实现相同的结果

python subprocess
2个回答
0
投票

假设您正在尝试运行某些命令your_command您可以使用以下命令:

some_proc = subprocess.Popen(['your_command'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)

stdout=subprocess.PIPE确实取得了成功的结果。之后,您可以按如下方式访问输出:

store_in_var = some_proc.stdout

现在你可以解析你的store_in_var


0
投票
import subprocess
from subprocess import PIPE

comd = input('command here : ')
comds = comd.split(' ')
f = subprocess.run(comds, shell= True,stdout=PIPE, stderr=PIPE)
result = f.stdout.decode()
errors = f.stderr.decode()
© www.soinside.com 2019 - 2024. All rights reserved.