我正在开发一个程序,该程序将找到一些文件并将文件信息提供给 NSIS 脚本。NSIS脚本接受命令行如下
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”,请告诉我。
期待您的意见