電話する
'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)