我正在研究一個程序,它將查找一些文件並將文件信息提供給NSIS腳本。 NSIS腳本接受如下命令行:從多個參數的python腳本運行Windows可執行文件
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"
輸出正如你可以看到我使用的數據好壞參半,得到一些比特類型的字典和一些從類調用(很容易在我身上如果我的條款有些不正確,我現在已經學習python了大約4天了,請糾正我的錯誤)。如果使用這樣的信息時顯示「unpythonic」,請告訴我們。
期待您輸入
作爲樣式的註釋,如果有某種未終止的支架掛在周圍,則不需要尾隨的'\'來在python中繼續一行。例如'([{' – mgilson 2013-02-13 02:24:09
re:我以前的評論 - 進一步的解釋可以在python [style guide]中找到(http://www.python.org/dev/peps/pep-0008/#indentation) – mgilson 2013-02-13 02:29:54