Я работаю над программой, которая найдет некоторые файлы и предоставит информацию о файле скрипту NSIS. Сценарий NSIS принимает командную строку следующим образом:Запуск окон, исполняемый из скрипта python с несколькими аргументами
makensis.exe /DON="This is one" /DOD="c:\path1\path2 to dir\path 3" scriptfile.nsi
Значения переключателей будут меняться при каждом выполнении программы. Я попытался выполнить это, используя subprocess.call и subprocess.Popen. Проблема, которую я имею, связана с цитированием.
Прежде всего вызовы подпроцесса, кажется, помещают весь аргумент аргумента между двойными кавычками, делающими NSIS, рассматривающими их как один аргумент. Во-вторых, я затрудняюсь с тем, чтобы отдельные ключи правильно указывали в командной строке. Вот фрагмент того, как выглядит моя программа.
subprocess.Popen([setup.profile['NSISExe'], ' /DON="' + setup.profile['DESC'] + '" /DOD="' + setup.profile['InstallDir'] + \
'" /DMT="' + app.machine_type.get() + '" /DSD="' + os.path.join(WinShellVar.LOCAL_APPDATA, 'MLC CAD', appname) + \
'" /DXV=X6 ' + setup.profile['NSISScript']])
А вот выход из NSIS
Can't open script " /DON="Mastercam X6 Standard" /DOD="C:\Users\John\Desktop" /D
MT="mill" /DSD="C:\Users\John\AppData\Local\MLC CAD\mcdeftool" /DXV=X6 bin\packa
ge.002.nsi"
Как вы можете видеть, я использую смешанный пакет данных, получить некоторые биты для dicts и некоторые из класса вызывает (легко мне если мои условия несколько неправильны, я изучаю python уже около 4 дней, поправьте меня, пожалуйста, просто красиво). Если вы используете эти данные, это «unpythonic», дайте мне знать.
Заглядывая вперед к введенному
В качестве примечания к стилю вам не понадобится завершающая '\' для продолжения строки в python, если вокруг будет какая-то разногласия. например '([{' – mgilson
re: мой предыдущий комментарий - Дальнейшие объяснения можно найти в руководстве по стилю python [http://www.python.org/dev/peps/pep-0008/#indentation) – mgilson