Python 打印接收到的 StdOut

标签 python stdout

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

相关文章:

python - 使用 Numpy 与硬编码进行标准化

python - 为什么 Tkinter 在绘图时会删除之前的矩形?

python - 有没有办法获取 Big Query 中的数据集列表以及表和 View ?

python - OSError : [E050] Can't find model 'fr_core_web_md' . 它似乎不是快捷方式链接、Python 包或数据目录的有效路径

python - 从 Python 脚本重定向 subprocess.run() stderr

c - 将 stdout 和 stderr 从 fork 进程复制到文件

python - 如何用边连接两个子图?

assembly - 无法在 NASM 中打印数字

c++ - 将 CreateProcess() 的标准输出重定向到管道并在另一个进程中读取它 c++ windows

python - 在 Python 中静默函数的标准输出,而不破坏 sys.stdout 并恢复每个函数调用