使用包含空格的参数调用 Qprocess - Windows
calling Qprocess with arguments containing spaces - Windows
我正在尝试使用 qprocess
调用可执行文件并传递一些可能(而且很可能会)包含空格(并非全部)的参数。
可执行文件是一个 python
脚本,已与 Py2exe
一起打包。 python
脚本使用 optparse
来解析参数。
如果我在 cmd.exe
中调用 py2exe.exe
调用是这样的:
pythonExecutable.exe -aarg_a -barg_b -c"path with spaces" -darg_d
这样调用就成功了。
我想通过使用 Qprocess
的 Qt
应用程序来完成此操作,但我找不到方法,因为 Qprocess
会删除任何引号(""
) 在出现空格的地方保留参数。
我好像漏掉了什么,有人可以帮忙解决这个问题吗?
如果您以更正确的方式使用 QProcess,那将不是什么大问题
QString program = "pythonExecutable.exe";
QStringList arguments;
arguments <<"-aarg_a"<< "-barg_b"<< "-c\"path with spaces\""<< "-darg_d";
QProcess *myProcess = new QProcess(parent);
myProcess->start(program, arguments);
正常情况下,当您与 space 有争论并且不需要 " 符号
你只需要在 QStringList
中传递参数
QString program = "pythonExecutable.exe";
QStringList arguments;
arguments <<"a"<< "path with spaces";
QProcess *myProcess = new QProcess(parent);
myProcess->start(program, arguments);
此程序是 Qt 文档中列出的示例程序的修改版本 Here
我正在尝试使用 qprocess
调用可执行文件并传递一些可能(而且很可能会)包含空格(并非全部)的参数。
可执行文件是一个 python
脚本,已与 Py2exe
一起打包。 python
脚本使用 optparse
来解析参数。
如果我在 cmd.exe
中调用 py2exe.exe
调用是这样的:
pythonExecutable.exe -aarg_a -barg_b -c"path with spaces" -darg_d
这样调用就成功了。
我想通过使用 Qprocess
的 Qt
应用程序来完成此操作,但我找不到方法,因为 Qprocess
会删除任何引号(""
) 在出现空格的地方保留参数。
我好像漏掉了什么,有人可以帮忙解决这个问题吗?
如果您以更正确的方式使用 QProcess,那将不是什么大问题
QString program = "pythonExecutable.exe";
QStringList arguments;
arguments <<"-aarg_a"<< "-barg_b"<< "-c\"path with spaces\""<< "-darg_d";
QProcess *myProcess = new QProcess(parent);
myProcess->start(program, arguments);
正常情况下,当您与 space 有争论并且不需要 " 符号
你只需要在 QStringList
中传递参数QString program = "pythonExecutable.exe";
QStringList arguments;
arguments <<"a"<< "path with spaces";
QProcess *myProcess = new QProcess(parent);
myProcess->start(program, arguments);
此程序是 Qt 文档中列出的示例程序的修改版本 Here