Python subprocess 输出到 stdout
我正在使用subprocess模块来从Python运行一些可执行文件。
为了捕获这些可执行文件产生的输出,我使用了:
proc = subprocess.Popen (command_args, shell=False, stdout=subprocess.PIPE)
out = proc.communicate()[0]
#print the output of the child process to stdout
print (out)
这样做的结果是,在程序执行完毕后才会打印出输出。有没有办法让我在程序执行的同时就能看到输出呢?因为这些程序可能会运行很长时间,我真的需要看到输出。
谢谢大家的帮助。
2 个回答
0
这个方法对我有效:
如果你需要在 powershell
中执行命令:
import subprocess
S_V = subprocess.Popen(["powershell.exe", 'your command' ], stdout=subprocess.PIPE)
out, err = S_V.communicate()
print (out)
print (err )
或者如果你需要在 CMD
中执行命令:
name=subprocess.check_output('whoami') # replace your command with 'whoami'
name=name.decode("utf-8")
print (name)
注意: whoami
这个命令会显示当前登录到本地系统的用户。
22
简单来说,就是不要把输出发送到管道中:
proc = subprocess.Popen (command_args, shell=False)
proc.communicate()