Python 获取用Qt和C+编写的exe的输出+;

Python 获取用Qt和C+编写的exe的输出+;,python,qt,Python,Qt,我编写的python脚本调用exe文件(subprocess.Popen)时遇到了这个问题。我正在将stdout和stderr重定向到管道,但无法读取(subprocess.Popen.stdout.readline())任何输出 我尝试在windows cli中运行exec文件并重定向stdout和stderr。。。什么也没发生。所以我认为这个Qt应用程序中没有stdout和stderr 是否有任何方法可以获取在屏幕上打印此exe的数据(通过应用程序为photivo.exe的方式) 警告:使用

我编写的python脚本调用exe文件(subprocess.Popen)时遇到了这个问题。我正在将stdout和stderr重定向到管道,但无法读取(subprocess.Popen.stdout.readline())任何输出

我尝试在windows cli中运行exec文件并重定向stdout和stderr。。。什么也没发生。所以我认为这个Qt应用程序中没有stdout和stderr

是否有任何方法可以获取在屏幕上打印此exe的数据(通过应用程序为photivo.exe的方式)

警告:使用communicate()而不是.stdin.write、.stdout.read或.stderr.read,以避免由于任何其他操作系统管道缓冲区填满并阻塞子进程而导致死锁

也就是说,试试这样的东西

process = subrocess.Popen(...)
stdout, stderr = process.communicate()
print(stdout)
print(stderr)
发件人:

对于Windows,如果它是控制台应用程序,则将文本发送到控制台;否则,它将被发送到调试器

Windows上有一个特殊的调试通道(WinAPI函数OutputDebugString)。另见

现在,photivo.exe可能使用纯qDebug()生成输出,从而写入调试通道。您可以尝试使用来验证这一点


在这种情况下,您必须找到从Python或fork photivo.exe读取调试通道的方法,并使其使用STDOUT/STDERR而不是qDebug()。

也许您可以看到yep!我尝试过.communicate(),但它在那里作为.stdout.readline()或.stdout.read()暂停。问题是,很明显(就像我在windows command promt中做的测试一样),应用程序没有标准输出或标准差,所以它会停在那里,只是等待输出,但没有。虽然命令promt屏幕中显然有ir输出,但我猜没有转发到stdio。我相信这是Qt特有的东西,但我不知道Qt是如何写入命令promt的!还没有想到调试通道,但恐怕输出它也不是调试管道。尝试使用DebugView,但仍然没有任何结果。还尝试重定向windows终端中的调试通道(无论什么_命令5>something.txt)。我想我得另找一个解决办法。