2013-05-11 73 views
0

我想要做的事情與接受的答案in this question非常相似,但是有一點變化。最後一行:管道進入子程序調用

print p3.communicate()[0] 

打印輸出p3。我想基本上得到subprocess.call()類似的行爲,而不是簡單地在stdout接收輸出。

例如,如果p3較小,使用communicate,對於較少的管道將更像一條管道,因爲它實際上不會打開較少,而只是將輸出打印出來。

有沒有辦法實現我之後的事情(實際上是打開少一點,而不是像貓一樣行爲並傳達其輸出)?向正確的方向點頭會很棒。

+0

你能描述一下*你想用文字(沒有代碼)做什麼*?然後你有什麼嘗試,例如,用'call(stdout = None)'替換最後一個'Popen(stdout = PIPE)/ communicate()',以及如何失敗(一個顯示問題的最小完整代碼示例會有幫助) ? – jfs 2013-05-11 07:15:15

+0

我當時非常笨,完全沒有閱讀文檔;我會在下面發表我的答案。 – hfaran 2013-05-11 07:22:27

回答

2

所以不是這樣做的:

p3 = Popen(cmd, stdin=p2.stdout, stdout=PIPE) 
... 
print p3.communicate()[0] 

我可以這樣做:

subprocess.call(cmd, stdin=p2.stdout) 

而且,讓我做什麼,我想要的。 :)