当前位置: 首页 > 面试题库 >

如何在管道上使用`subprocess`命令

梁巴英
2023-03-14
问题内容

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


问题答案:

要将管道与subprocess模块一起使用,必须通过shell=True

但是,出于各种原因,这并不是真正可取的选择,其中最重要的是安全性。相反,请分别创建psgrep流程,然后将输出从一个管道输送到另一个管道,如下所示:

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



 类似资料:
  • 问题内容: 我想搭配使用。我尝试了各种解决方案,但到目前为止没有任何效果。有人可以指导我怎么做吗? 问题答案: 将管道与模块一起使用,必须通过。 但是,出于种种原因,这并不是真正可取的选择,其中不仅包括安全性。相反,请分别创建和流程,并将输出从一个管道传递到另一个管道,如下所示: 但是,在你的特定情况下,简单的解决方案是先调用然后在输出上。

  • 问题内容: 我经历了各种不同的名为管道客户端/服务器实现的Linux,但其中大多数在读取/写入时使用阻止默认值。 因为我已经在使用poll()来检查其他标志,所以也可以通过poll()检查传入的FIFO数据是一个好主意… 经过所有研究,我认为以O_RDWR模式打开管道是防止在没有任何编写者打开管道的情况下无限期发生EOF事件的唯一方法。 这样,管道的两端都关闭了,其他客户端也可以打开可写端。作为回

  • 问题内容: 我最近将bash执行命令重写为Jenkins管道。旧代码就像 现在,我使用管道脚本来包装命令,像这样 但是,我遇到了一个错误。当我尝试时,它会正确显示。所以我怀疑内部有问题。 在使用管道之前,命令在外壳执行中工作正常。因此,源代码安装在Jenkins服务器上,似乎管道脚本不知道源命令是什么。 如何在sh wrapd块中运行source命令? 问题答案: 替换为 请注意,第一个点后有一个

  • 问题内容: 在Linux终端中,当一个命令的输出太长而无法在一页中读取时,我可以这样做: 这样我就可以读取cat文件的输出并上下滚动。 如何在IPython中执行此操作? 例如,我尝试了一下,但没有成功: 我最初的问题是通过Shift + Page Up不能看到来自的输出,并且我不想更改滚动缓冲区。 问题答案: 在IPython中,您可以使用标准的寻呼机(通常是)来显示对象。另外,您可以增加终端的

  • 问题内容: 在groovy脚本中(用于jenkins管道):如何运行命令而不是命令? 我尝试了以下方法: 在通话中致电“ ” : 将呼叫替换为呼叫: 附加信息: 我的命令比命令更复杂。 问题答案: 您提供的Groovy脚本正在将结果脚本中的第一行格式化为空白行。shebang告诉脚本使用/ bin / bash而不是/ bin / sh运行,它需要位于文件的第一行,否则它将被忽略。 因此,您应该这

  • 我正在尝试将自由风格的作业转换为管道代码。我有大量以下groovy命令需要在从属节点上运行。 错误: "java.io.FileNotFoundException: /target/checkout/pom.xml(没有这样的文件或目录)java.io.FileInputStream.open0(本机方法)" 我从输出中看到,groovy正在master上执行(我知道这是groovy的本质),无法