2012-02-06 30 views
0

我執行python命令,無法執行命令後,讀子輸出

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

我想讀的stderr和標準輸出

res = proc.stderr.read() 

在res我期待的任何錯誤或' '

但是閱讀stderr所花費的時間是無限的,不會讀取數值,無論結果如何,它都會在無限的時間內流逝。

某段時間回來相同的代碼工作正常,但不知道爲什麼它現在不閱讀stderr。

任何提示,謝謝。

回答

1

而不是顯式調用stderr.read(),只是在proc上進行通信。

output, error = proc.communicate() 

這樣你就可以通過與進程進行通信來獲得輸出和錯誤。

+0

我試着用相同的方法,但讀取proc需要無限的時間,:(不知道爲什麼...... !! – Shashi 2012-02-06 14:06:42

+1

Shashi,然後你的進程被阻塞,問題出在你的cmd上,等待一些輸入,嘗試一個不同的命令,或者當你發送標準輸入到PIPE時,請執行proc.communicate('input \ n') – 2012-02-06 14:12:01

+0

@ Senthil Kumaran確定我會嘗試。 – Shashi 2012-02-06 14:13:54