Skip to main content
 首页 » 编程设计

Python 打印接收到的 StdOut

2025年05月04日9birdshome

我正在尝试在我正在编写的 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