如何在管道中使用`subprocess`命令我想subprocess.check_output()用ps -A | grep 'process_name'。我嘗試了各種解決方案,但到目前為止沒有任 有人可以指導(dǎo)我怎么做嗎?
3 回答

海綿寶寶撒
TA貢獻1809條經(jīng)驗 獲得超8個贊
要使用帶subprocess
模塊的管道,您必須通過shell=True
。
但是,由于各種原因,這并不是真的可取,尤其是安全性。相反,單獨創(chuàng)建ps
和grep
處理,并將輸出從一個管道傳輸?shù)搅硪粋€,如下所示:
ps = subprocess.Popen(('ps', '-A'), stdout=subprocess.PIPE)output = subprocess.check_output(('grep', 'process_name'), stdin=ps.stdout)ps.wait()
但是,在您的特定情況下,簡單的解決方案是調(diào)用subprocess.check_output(('ps', '-A'))
然后str.find
輸出。

四季花海
TA貢獻1811條經(jīng)驗 獲得超5個贊
或者,您始終可以在子進程對象上使用communic方法。
cmd = "ps -A|grep 'process_name'"ps = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)output = ps.communicate()[0]print output
communic方法返回標準輸出的元組和標準錯誤。
添加回答
舉報
0/150
提交
取消