【问题标题】:How to get the bash output to a variable and hide output afterwards in python如何将bash输出获取到变量并随后在python中隐藏输出
【发布时间】:2019-12-11 20:03:32
【问题描述】:

我正在尝试将bash 输出到一个变量,然后在命令本身中将hide 输出。

我可以找到一种在命令末尾使用/dev/null 2>&1 隐藏输出的方法,如下所示:

kubectl get deployments -n kube-system | grep minions /dev/null 2>&1

它隐藏了输出,但我需要将其输出到一个变量然后隐藏它(所以我仍然会有输出但命令不会在终端中显示输出

我该怎么做?

【问题讨论】:

标签: python linux bash


【解决方案1】:

像这样:

import subprocess

cmd = "kubectl get deployments -n kube-system | grep minions"
ps = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
output = ps.communicate()[0]

【讨论】:

  • 我实际上是在使用python 执行这个 bash 命令。那么我怎样才能用 python 做到这一点呢?
  • 为什么你的帖子中从来没有提到过python?
  • 你确定这个方法不会将输出打印到终端吗?
  • 你确定这个方法不会将输出打印到终端吗?这个subprocess.check_output
  • 是的。我测试过,它无法识别grep|。这是我的命令 - ["kubectl", "get", "deployments", "-n", constants.NAMESPACE, "|", "grep", "-E", "'(^|\s)"+constants.DEPLOYMENT_NAME+"($|\s)'"]
【解决方案2】:

在 bash 中查找反引号。它们捕获命令的输出,但不会出现在用户面前。

http://www.tldp.org/LDP/abs/html/commandsub.html

【讨论】:

  • 不,$( ) 已弃用反引号
  • 而且 ABS 并不是一个很好的参考。
  • 我同意,ABS 也过时了
猜你喜欢
  • 2013-08-06
  • 1970-01-01
  • 1970-01-01
  • 2012-09-26
  • 2010-10-11
  • 2011-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多