電話する
'svn di -revision <revNumber>:HEAD --summarize --xml >>svndiff.xml'
subprocess.call() を使用すると、エラーが発生します
svn: E020024: Error resolving case of '>>svndiff.xml'
ターミナルに同じコマンドを入力すると、正常に動作します。トラップはどこですか?
電話する
'svn di -revision <revNumber>:HEAD --summarize --xml >>svndiff.xml'
subprocess.call() を使用すると、エラーが発生します
svn: E020024: Error resolving case of '>>svndiff.xml'
ターミナルに同じコマンドを入力すると、正常に動作します。トラップはどこですか?
ターミナルで>>svndiff.xml
は、シェルによって解釈されます。デフォルトモードで使用する場合、そのような引数は文字通りプロセスsubprocess.call
に渡されます。svn
(実際の呼び出しは表示されませんでしたsubprocess.call
が、エラー メッセージを考えると、それが最も可能性の高い診断です。)
代わりに、stderr
キーワード引数を使用して適切な出力を提供する必要があります。例えば:
with open('svndiff.xml', 'a') as log:
subprocess.call(["svn", "di", "--revision", "%s:head" % rev_number,
"--summarize", "--xml"], stdout=log)
または、shell=True
シェルにそれを実行させるために使用できます (スペースやシェル インジェクションを含むファイル名の問題など、シェル解析の通常の落とし穴があります)。
subprocess.call("svn di --revision %s:HEAD --summarize --xml >>svndiff.xml" % rev_number,
shell=True)