Python subprocess 输出到 stdout

22 投票
2 回答
33440 浏览
提问于 2025-04-16 17:59

我正在使用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()

撰写回答