1

電話する

'svn di -revision <revNumber>:HEAD --summarize --xml >>svndiff.xml' 

subprocess.call() を使用すると、エラーが発生します

svn: E020024: Error resolving case of '>>svndiff.xml'

ターミナルに同じコマンドを入力すると、正常に動作します。トラップはどこですか?

4

1 に答える 1

1

ターミナルで>>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)
于 2013-06-26T10:12:32.560 に答える