2017-03-02 9 views
1

私の目標は、ファイルを実行し、そのステータス(成功した場合は0)を返し、その出力も返すことです。私はosモジュールを使ってシミュレーションを実行している状態にしています。バッチファイルの実行の返信

status= os.system("file") 

出力を持つためにサブプロセスモジュールを使用しています。

output=subprocess.check_output("file") 

私の質問:ファイルを2回実行せずにステータスと出力の両方を使用できる機能はありますか?

+0

ウィンドウの場合、 '%errorlevel%'システム変数を 'os.system()'で確認することができます。 –

+2

'subprocess.Popen'はそれを行います。 ( 'wait()'は返り値を、 'stdout'は出力を返します。 –

答えて

1

check_outputは、すでに必要なすべてを行います。ドキュメントから:

subprocess.check_output(引数、*、STDIN =なし、標準エラー出力=なし、シェル= Falseを、 universal_newlines = Falseのは)引数を指定してコマンドを実行し、バイト列としてその 出力を返します。

戻りコードがゼロでない場合、CalledProcessErrorが発生します。 CalledProcessErrorオブジェクトがリターンコード 属性およびSO出力属性のいずれかの出力

にリターンコードを持つことになり、すべてがうまく動作するかどうか、それだけで出力を返します。それ以外の場合は、正確な戻りコードが存在する例外と、呼び出されたプロセスのエラーまでの部分出力が発生します。

関連する問題