我希望能够从python代码运行一个子进程,并且都能实时看到输出,一旦进程完成,就会在变量中输出
现在我做两件事之一
1)使用subprocess.call运行子进程在这种情况下,我实时获得输出,但我最后没有变量中的输出(我想解析它并从中提取值)
2)使用subprocess.check_output运行子进程在这种情况下,我有一个变量的输出,但如果我想看到它,那么我必须“手动”打印它
有没有办法让两件事“在一起”?
希望很清楚,如果需要,我可以添加我的代码
谢谢 !!!
编辑:
这是我目前的代码
我添加了一个超时可选参数(默认值为1200并且还处理shell(由于某些原因,在Linux中工作的相同命令在Windows中不起作用,如果我没有shell = True)“mode”参数是一个我用来区分我想要“实时”输出的情况,我不需要解析它和其他情况
我想知道是否有更清洁,更好的方法来实现相同的结果
假设您正在尝试运行某些命令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
了
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()