我正在尝试在我正在编写的 PyQt GUI 应用程序中运行包装一个简单的(Windows)命令行工具。我遇到的问题是命令行工具将它的进度抛出到标准输出(这是一个服务器重置命令,所以你得到“尝试停止”和“重新启动”类型的输出。
我想要做的是捕获输出,以便我可以将其显示为我的应用程序的一部分。我认为执行以下操作会非常简单:
import os
import subprocess as sub
cmd = "COMMAND LINE APP NAME -ARGS"
proc = sub.Popen(cmd, shell=True, stdout=sub.PIPE).stdout
while 1:
line = proc.readline()
if not line:
break
print line
这部分有效,因为我确实获得了 StdOut 的内容,但不是在发送进度消息时,我在命令行应用程序退出时得到它,并且它似乎一次性刷新 StdOut。
有简单的答案吗?