我希望能够从python代码运行一个子进程,并且都可以实时查看输出,并且一旦该进程完成,就将输出保存在变量中
现在我要做两件事之一
1)使用subprocess.call运行子流程,在这种情况下,我可以实时获取输出,但最后没有变量输出(我想解析它并从中提取值)
2)在这种情况下,请使用subprocess.check_output运行子流程,但我将输出保存在变量中,但是如果要查看它,则必须“手动”打印它。
有没有办法让这两件事“在一起”?
希望很明显,我可以根据需要添加代码
谢谢!!!
编辑:
这是我当前的代码
我添加了一个超时可选参数(默认值为1200,并且还处理了shell(由于某些原因,如果我没有shell = True,则在Linux中可以使用的相同命令在Windows中将无法使用))“ mode”参数是我用来区分需要“实时”输出而无需解析它的情况和其他情况的一种情况。
我想知道是否有一种更干净,更好的方法来达到相同的结果
答案 0 :(得分: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
答案 1 :(得分: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()