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

幕布斯7119047
TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
要使用帶subprocess
模塊的管道,您必須通過shell=True
。
但是,由于各種原因,這并不是真的可取,尤其是安全性。相反,單獨(dú)創(chuàng)建ps
和grep
處理,并將輸出從一個(gè)管道傳輸?shù)搅硪粋€(gè),如下所示:
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貢獻(xiàn)1934條經(jīng)驗(yàn) 獲得超2個(gè)贊
或者,您始終可以在子進(jìn)程對(duì)象上使用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方法返回標(biāo)準(zhǔn)輸出的元組和標(biāo)準(zhǔn)錯(cuò)誤。
添加回答
舉報(bào)
0/150
提交
取消