3

私はちょうどこのようなことをしたい:

>>bar, err_value = subprocess.check_output("cat foo.txt", shell=True)
>>print bar
>>Hello, world.
>>print err_value
>>0

しかし、私はそれを行うことができないようです。stdout、エラー コード (.call 経由)、またはその両方を取得できますが、何らかのパイプを使用する必要があります。ここで何が欠けていますか?この (私にとって) 明白な機能に関するドキュメントは非常にまばらです。これが単純な質問である場合は申し訳ありません。

4

3 に答える 3

4

stdout、sterr、および戻りコードが必要だと思いますか? その場合、これを行うことができます:

import subprocess
PIPE = subprocess.PIPE
proc = subprocess.Popen(cmd, stdout=PIPE, stderr=PIPE)
output, err = proc.communicate()
errcode = proc.returncode
于 2013-08-23T14:10:05.227 に答える
1

subprocess.check_outputは値 (出力文字列) を返し、終了ステータスは返しません。次のフォームを使用します。

import subprocess
try:
    out = subprocess.check_output('cat foo.txt', shell=True)
    print out
except subprocess.CalledProcessError, e:
    print e
于 2013-08-23T14:11:40.183 に答える