readAll()或readAllStandardOutput()正在返回一个空字符串,该字符串在执行之前也已存在

2024-09-29 02:18:01 发布

您现在位置:Python中文网/ 问答频道 /正文

正如标题中定义的,这两个函数都返回一个空字符串。 让我描述一下我的场景,我正在执行一个python文件,这个文件最后打印了一个文本,文本在执行后被发布到应用程序输出上,但是给定的输出没有被复制。 另外,我的python脚本需要30到40秒来执行,但是readAll函数是在加载脚本之后执行的

执行python脚本的函数:

    QString text = ui->textEdit->toPlainText();
    QString path = "D:/DS Project/Treegramming";
    QString  command("py");
    QStringList params = QStringList() << "nlp.py";
    params << text;
    QProcess *process = new QProcess();
    process->startDetached(command, params, path);
    process->waitForFinished(30000);
    QByteArray ba = "";
    process->waitForReadyRead(30000);
    ba += process->readAllStandardOutput();
    qDebug() << ba ;

再次重复,qDebug()将在执行整个脚本之前提供空输出


Tags: 文件path函数textpy文本脚本params
1条回答
网友
1楼 · 发布于 2024-09-29 02:18:01

想想这条线

process->startDetached(command, params, path);

在这里您实际上是在调用static ^{} member,它与您新创建的QProcess无关。因此,您不会看到任何标准输出/错误

相反,您应该将non-static ^{} member与(untested)

process->setWorkingDirectory(path);
process->start(command, params);

相关问题 更多 >