プロセスを起動して and を取得しstdout
たいstderr
。これをリアルタイムで取得することはあまり気にしません。
subprocess.check_ouput()
を使用したかったのですが、プロセスが失敗する可能性があります。StackOverflow と Python docs を読んだ後、try .. catch
ブロックを追加しました。
def execute(cmd,timeinsec=60):
print("execute ",cmd, " with time out ",timeinsec)
try:
output = subprocess.check_output(cmd, stderr=subprocess.STDOUT, timeout=timeinsec,universal_newlines=True)
except subprocess.TimeoutExpired:
print("timeout expired")
return "",2
except subprocess.CalledProcessError:
print("called process failed")
return "",1
print ('The command returned the following back to python:'+output)
return output,0
しかし、出力を印刷すると、出力 output.decode('utf-8')
の最初の行が得られます。
注:これは、Windows上のMsysgit 1.8で配布されたMSys環境で実行しています。
何が間違っている可能性があるか考えていますか?これを行うためのより良い方法を知っていますか?