QProcess中如何处理输入参数
how to handle input parameters in 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 command 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");
以下简单的 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 command 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");