2015-08-27 6 views
3

Я пытаюсь вызвать исполняемый файл с qprocess и передать некоторые аргументы, которые могут (и, скорее всего, будут) содержать пробелы (не все из них). Исполняемый файл представляет собой скрипт python, который был упакован с Py2exe. Сценарий python использует optparse для анализа аргументов.вызов Qprocess с аргументами, содержащими пробелы - Windows

Если я называю py2exe.exe в cmd.exe вызов выглядит так:

pythonExecutable.exe -aarg_a -barg_b -c"path with spaces" -darg_d 

Вызов, как это будет успешным.

Я хочу сделать это с помощью приложения с помощью QtQprocess, но я не могу найти способ сделать это, потому что Qprocess лишит любые кавычки (""), оставляя аргументы сломанные везде, где появляются пробелы.

Кажется, что-то не хватает, может ли кто-нибудь помочь в решении этой проблемы?

+0

Возможный дубликат [Как выполнить команду cmd с помощью QProcess?] (Http://stackoverflow.com/questions/21596104/how-to-execute-a-cmd-command-using-qprocess) – TheDarkKnight

ответ

3

, что не будет большой проблемой, если и использовать 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); 

нормально, когда у вас аргументы с пространством и do't нужен "символ

вам просто передать аргумент в QStringList

QString program = "pythonExecutable.exe"; 
QStringList arguments; 
arguments <<"a"<< "path with spaces"; 

QProcess *myProcess = new QProcess(parent); 
myProcess->start(program, arguments); 

эта программа представляет собой модифицированную версию примера программы перечислены в документации Qt Here