qt - QProcess中如何处理输入参数
问题描述
以下简单的 python 代码需要三个输入参数用于命令行中的“test.py”(除了“python”和“test.py”):
#!/usr/bin/python
import sys
def main(argv):
if (len(sys.argv) < 4):
print ('argv must be greater than 4')
else:
print ('Number of arguments:', len(sys.argv), 'arguments.')
print ('Argument List:', str(sys.argv))
if __name__ == "__main__":
main(sys.argv[1:])
运行 test.py:
C:\>python test.py arg1 arg2
argv must be greater than 4
C:\>python tt.py arg1 arg2 arg3
Number of arguments: 4 arguments.
Argument List: ['tt.py', 'arg1', 'arg2', 'arg3']
我使用以下简单的 Qt 代码,但无法产生上述结果。Qt 中有没有办法模仿上面的命令行,即'python 命令 arg1,... argN'。注意:在这种情况下必须使用“python”。
QProcess *qtq = new QProcess();
QString program("python");
QStringList arguments("test.py arg1 arg2 arg3");
qtq->setProgram(program);
qtq->setArguments(arguments);
qtq->start();
qtq->waitForReadyRead();
qtq->waitForFinished();
QByteArray s = qtq->readAll();
qDebug() << s;
解决方案
QStringList arguments("test.py arg1 arg2 arg3");
那是你的问题线。这将创建一个只有一个字符串的 QStringList,它作为一个参数传递给 python。你应该这样做:
QStringList arguments;
arguments << QString("test.py");
arguments << QString("arg1");
arguments << QString("arg2");
arguments << QString("arg3");
推荐阅读
- node.js - 如何删除json数组中的双方括号-nodejs
- c# - 在 Azure 上托管时找不到位于我的根项目文件夹中的文件
- java - 如何通过方法创建两个具有相同类的bean?
- crystal-reports - 如果某些参数给定而某些参数为空,则在 Crystal Reports 中显示所有记录
- php - bitnami 堆栈 (ec2) 上的 Woocommerce Webshop:SSL 操作失败,代码为 1。OpenSSL 错误消息:错误:14090086
- tensorflow - 使用窗口数据集预测未来时期的时间序列值
- java - 这个 @Override for Arrays.sort 在 Java 中是如何工作的?
- sql - 取查询的最后一列,并将结果以逗号分隔在 1 列中
- reactjs - Gatsby:从电子邮件链接中消失的 url 参数
- vba - 如何将用户表单添加到此代码中而不是 msgbox?