Paul の回答に追加するには (subprocess.check_output を使用):
エラーをスローする可能性のあるコマンドで簡単に動作するように少し書き直しました (たとえば、git 以外のディレクトリで「git status」を呼び出すと、リターン コード 128 と CalledProcessError がスローされます)。
これが私のPython 2.7の例です:
import subprocess
class MyProcessHandler( object ):
# *********** constructor
def __init__( self ):
# return code saving
self.retcode = 0
# ************ modified copy of subprocess.check_output()
def check_output2( self, *popenargs, **kwargs ):
# open process and get returns, remember return code
pipe = subprocess.PIPE
process = subprocess.Popen( stdout = pipe, stderr = pipe, *popenargs, **kwargs )
output, unused_err = process.communicate( )
retcode = process.poll( )
self.retcode = retcode
# return standard output or error output
if retcode == 0:
return output
else:
return unused_err
# call it like this
my_call = "git status"
mph = MyProcessHandler( )
out = mph.check_output2( my_call )
print "process returned code", mph.retcode
print "output:"
print out