Qt5.6 QProcess::start获取标准输出

新手上路,请多包涵

平台:windows10
我使用QProcess的start函数执行本地(当前目录下)的python文件后,无法从readAllStandardOutput获取标准输出。

python文件的代码:

print “hello,world”

Qt代码:

#include <QProcess>
#include <QStringList>
#include <QByteArray>
#include <QDebug>

void fun1(){
    QProcess process;
    process.start("python test.py");
    process.waitForFinished();
    QByteArray a = process.readAllStandardOutput();


    qDebug()<<a;
}

int main(){
    fun();
}

输出的a只有"",没有数据,但是在cmd中运行python文件,没错,且可以输出"hello,world"。
在我使用process.execute这个函数直接执行python文件时,python文件可以正常执行,且可以输出"hello,world"到Qt的终端。

#include <QProcess>
#include <QStringList>
#include <QByteArray>
#include <iostream>
#include <QDebug>

void fun2(){
    QStringList args("F:/test.py");
    QProcess process;
    process.execute(QString("Python.exe"), args);
    QByteArray a = process.readAllStandardOutput();
    process.waitForFinished();
    qDebug()<<a;

}

int main(){
    fun1();
    qDebug<<"--------";
    fun2();
}

执行结果如图所示:
图片描述

我使用C++执行python脚本是想使用python的requests模块直接进行http的url访问,c++貌似只能进行socket,url访问好像不容易搞,就想出了这个取巧的方法,如果大神有更好的方法的话,欢迎指教。
求助大神指出错误!如果有解决方法更好了。

阅读 5.4k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏