ビルド番号を実行可能ファイルにスタンプするために、Python スクリプト内から使用しているコマンド ライン プログラムがあります。
これはコマンド ライン プログラムです: http://www.elphin.com/downloads/stampver/
私の問題は、プログラムが引数の 1 つに二重引用符 (") を取り、このプログラムを呼び出すために使用している Python サブプロセス モジュールが、プログラムの実行時に二重引用符の前にバックスラッシュを追加し続けることです。これにより、プログラムが失敗する原因となります。間違った構文に。
次のようなコマンドが必要です。StampVer.exe -nopad -k -f"0.1.4491.0" <ExeFile>.exe
そして代わりに Python が実行されています:StampVer.exe -nopad -k -f\"0.1.4491.0\" <ExeFile>.exe
文字列を未加工としてマークしたり、Python で引用符の前にバックスラッシュを追加したりするなど、同様の音の問題について StackOverflow で見つけたいくつかのことを試しました。Python はバックスラッシュと二重引用符をエスケープしようとするため、コマンド ラインでバックスラッシュが 1 つではなく 3 つになるだけです。
これを達成するために subprocess モジュール以外のものを使用する必要がありますか、それとも Python のこれらすべてのタイプのモジュールは、文字をエスケープするための同じ規則に従いますか? サブプロセスにエスケープ文字を削除するか、まったく追加しないように指示するためにできることはありますか?
編集
これは、Python からサブプロセスを呼び出す方法です。
def set_file_version(version_number, filepath):
try:
file_version_arg = '-f"{0}"'.format(version_number)
cmd_line = ["StampVer.exe", "-nopad", "-k", file_version_arg, filepath]
subprocess.check_output(cmd_line)
except subprocess.CalledProcessError as e:
if e.returncode == 1:
pass
else:
raise e
次に、StampVer はこれを返します。
error: Invalid -f parameter. Try -f"0.0.0.0" Use StampVer -? for help