我的問題是這樣的 - 我需要從一個子進程得到輸出,我使用下面的代碼來調用它 - (隨意忽略冗長的參數。標準輸出= subprocess.PIPE)Python Popen不像一個子進程
(stdout, stderr) = subprocess.Popen([self.ChapterToolPath, "-x", book.xmlPath , "-a", book.aacPath , "-o", book.outputPath+ "/" + fileName + ".m4b"], stdout= subprocess.PIPE).communicate()
print stdout
由於下面一個答案,我已經能夠得到程序的輸出,但我還是最終等待進程結束之前,我得到任何東西。有趣的是,在我的調試器中,有各種文本在控制檯中飛行,並且全部被忽略。但是,當任何事情以黑色寫入控制檯的時候(我正在使用pycharm),程序仍然沒有問題。主程序能否等待某種輸出以便繼續前進?這是有道理的,因爲我正在嘗試與它進行通信......在控制檯中可以看到的文本和使其進入stdout的實際文本之間有區別嗎?我將如何收集寫入控制檯的文本?
謝謝!
簡單地說 - 你不應該使用'subprocess.Popen()'得到相同的結果。請提供足夠的示例來重現此次調用的問題。 – 2012-07-31 15:28:00