現在、Python スクリプトで大きな問題が発生しています。このスクリプトは、ハンドラーを介して任意のコマンドを実行し、誤ったエラー レポートを正しいエラー レポートに変換します。
私が抱えている問題は、パスにアンパサンドを含むコマンドを使用して、スクリプトを Windows で正しく動作させることです。アンパサンドを ^ でエスケープして、コマンドを引用しようとしましたが、どちらも機能しません。私は今、アイデアがありません。助言がありますか?
現在の回答から明確にするために:
- subprocess モジュールを使用しています
- コマンドライン+引数をリストとして渡しています
- 問題は、引数ではなく、コマンド自体へのパスにあります
- コマンドを引用してみました。
[Error 123] The filename, directory name, or volume label syntax is incorrect
エラーの原因となります - シェル引数を使用していません(だから
shell=false
) - 問題が発生した場合に備えて、処理のために stderr へのパイプを取得していますが、stdout と stdin は無視しています
- 現在は Windows でのみ使用でき、これまでにテストした他のすべてのケースで期待どおりに動作します。
- 失敗しているコマンドは次のとおりです。
p = subprocess.Popen(prog, stderr = subprocess.PIPE, bufsize=-1)
リスト「prog」の最初の要素にアンパサンドが含まれている場合。この最初の文字列を引用しても機能しません。