我想用一個python等效於在perl中管道一些shell命令。就像開放的Python版本(PIPE,「command |」)。Python的Popen清理
我去子模塊,並嘗試這個辦法:
p = subprocess.Popen("zgrep thingiwant largefile", shell=True, stdout=subprocess.PIPE)
這適用於讀取輸出相同的方式,我在Perl會,但它不乾淨自己的身體。當我離開口譯員時,我得到了
grep: writing output: Broken pipe
在幾百萬次的時間裏,我想我天真地希望所有這些都會爲我照顧,但事實並非如此。調用p終止或殺死似乎沒有幫助。看看進程表,我發現這會殺死/ bin/sh進程,但將孩子gzip留下來抱怨損壞的管道。
什麼是正確的方法來做到這一點?
在子流程「p」完成之前,您是否正在退出解釋器? – physicsmichael 2010-04-07 22:52:06