2012-02-06 19 views
0

「私は、Pythonのコマンドを実行していますサブプロセスの出力を読み取ることができない

proc = subprocess.Popen(cmd, 
         shell=False, 
         stdin=subprocess.PIPE, 
         stdout=subprocess.PIPE, 
         stderr=subprocess.PIPE, 
         ) 

は私は解像度で

res = proc.stderr.read() 

標準エラー出力と標準出力を読みたいコマンドを実行した後、私はすべてのエラーを期待していますか'

しかし、stderrが無限の時間を費やしていることは、これまでの結果it.itが無限の時間に行く値を読まないことになります。

同じコードが正常に動作していますが、なぜそれが現在標準偏差を読んでいないのかはわかりません。

いいえ、ありがとう。

答えて

1

stderr.read()を明示的に呼び出す代わりに、procで通信を行います。

output, error = proc.communicate() 

こうすると、プロセスと通信することで出力とエラーが発生します。

+0

私は同じことを試みましたが、無限の時間を取っているprocを読んでいました:(理由はわかりません... !! – Shashi

+1

Shashi、あなたのプロセスがブロックしています、あなたが渡しているcmdに問題があります。いくつかの入力を待っています。別のコマンドを試してみてください。また、stdinをPIPEに送っても、proc.communicate( 'input \ n') –

+0

@ Senthil Kumaranを実行してください。 – Shashi

関連する問題