我需要啓動一個外部進程,通過stdin和stdout來回發送消息來控制它。使用subprocess.Popen我能夠啓動該進程,但無法通過stdin控制執行,因爲我需要。使用Python通過STDIN/STDOUT啓動和控制外部進程
的我想要完成的流程是:
- 啓動外部進程
- 迭代對於一些數量的步驟
- 告訴外部程序來完成下一個處理通過在它的stdin中寫一個換行符
- 等待外部進程通過向它的stdout寫入換行符來完成該步驟
- 關閉外部進程的標準輸入以向外部進程指示執行已完成。
我想出了迄今爲止以下:
process=subprocess.Popen([PathToProcess],stdin=subprocess.PIPE,stdout=subprocess.PIPE);
for i in xrange(StepsToComplete):
print "Forcing step # %s"%i
process.communicate(input='\n')
當我運行上面的代碼中的「\ n」不會傳遞到外部的過程,我永遠不會超越步驟#0 。 process.communicate()中的代碼塊不會繼續進行。我正在使用communications()方法嗎?
此外,我將如何實現「等到外部進程寫入新行」功能塊?
當我第一次這樣做的時候,有些東西會讓我咬牙切齒,如果你只發送幾個字符,你可能不得不在發送任何東西之前刷新流。 – Kiv 2009-07-06 16:20:57