いくつかのファイルを見つけて、ファイル情報を NSIS スクリプトに提供するプログラムに取り組んでいます。NSIS スクリプトは、次のようにコマンド ラインを受け入れます。
makensis.exe /DON="This is one" /DOD="c:\path1\path2 to dir\path 3" scriptfile.nsi
スイッチの値は、プログラムを実行するたびに変化します。subprocess.call と subprocess.Popen を使用してこれを実行しようとしました。私が抱えている問題は、引用に関係しています。
まず第一に、サブプロセス呼び出しは引数ステートメント全体を二重引用符で囲んで、NSIS がそれらを 1 つの引数と見なすようにします。次に、個々のスイッチをコマンド ラインで適切に引用するのに苦労しています。これは、私のプログラムが現在どのように見えるかのスニペットです。
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"
ご覧のとおり、私はデータの混合バッグを使用しており、辞書用のビットとクラス呼び出しからいくつかのビットを取得しています(私の用語が多少間違っている場合は簡単にしてください。私は約4日間Pythonを学んでいます。修正してくださいうまく)。 このデータをこのように使用するのが「非 Pythonic」である場合は、お知らせください。
あなたの入力をお待ちしております