小编典典

如何使用带有管道的`subprocess`命令

all

我想subprocess.check_output()ps -A | grep 'process_name'.
我尝试了各种解决方案,但到目前为止没有任何效果。有人可以指导我怎么做吗?


阅读 63

收藏
2022-04-14

共1个答案

小编典典

要在模块中使用管道subprocess,您必须通过shell=True.

但是,由于各种原因,这并不是真正可取的,尤其是安全性。相反,分别创建psandgrep进程,并将输出从一个管道传输到另一个进程,如下所示:

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输出。

2022-04-14