私はプロセスを実行しようとしています。終了したらstderrとstdoutを読んでください。私は、Pythonでこれを行うための唯一の方法は、subprocess.Popenを作成し、stderrとstdout argsとしてsubprocess.PIPEを使用して、Popen.stderrとPopen.stdoutファイル記述子を読み取ることです。Python subprocess.Popen strange behavior
In [133]: subprocess.call(['python', '-c', "import sys; sys.exit(1)"])
Out[133]: 1
In [134]: p = subprocess.Popen(['python', '-c', "import sys; sys.exit(1)"])
In [135]: p.returncode
In [136]:
私はsubprocess.call
のリターンコードを取得することができますが、私はsubprocess.Popen
のリターンコードを取得することはできません。また、私はsubprocess.Popenが実際にコマンドを実行しますかどうかを確認するために標準エラー出力を読んで試してみた:
In [143]: p = subprocess.Popen(['python', '-c', "import sys; sys.stderr.write('ook'); sys.exit(1)"], stderr=subprocess.PIPE)
In [144]: p.stderr.read()
Out[144]: 'ook'
In [145]: p.returncode
In [146]: p.kill()
In [147]: p.returncode
In [148]:
だから、私はsubprocess.Popenに与えるコマンドが実行されていることを意味する、標準エラー出力を読み取ることができますが、私はリターンコードを取得することはできませんsubprocess.Popen
。何か案は?