如何在管道中使用`subprocess`命令我想subprocess.check_output()用ps -A | grep 'process_name'。我尝试了各种解决方案,但到目前为止没有任 有人可以指导我怎么做吗?
3 回答
潇湘沐
TA贡献1816条经验 获得超6个赞
要使用带subprocess
模块的管道,您必须通过shell=True
。
但是,由于各种原因,这并不是真的可取,尤其是安全性。相反,单独创建ps
和grep
处理,并将输出从一个管道传输到另一个,如下所示:
ps = subprocess.Popen(('ps', '-A'), stdout=subprocess.PIPE)output = subprocess.check_output(('grep', 'process_name'), stdin=ps.stdout)ps.wait()
但是,在您的特定情况下,简单的解决方案是调用subprocess.check_output(('ps', '-A'))
然后str.find
输出。
胡子哥哥
TA贡献1825条经验 获得超6个赞
或者,您始终可以在子进程对象上使用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
提交
取消