我正在尝试在我正在编写的 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。
有简单的答案吗?
最佳答案
通过标准输入/标准输出进行交互式通信是一个常见问题。
不过你很幸运,通过 PyQt,你可以使用 QProcess,如下所述: http://diotavelli.net/PyQtWiki/Capturing_Output_from_a_Process
关于Python 打印接收到的 StdOut,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1152160/