首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从subprocess.call()的多列输出中提取信息?

问从subprocess.call()的多列输出中提取信息?
EN

Stack Overflow用户
提问于 2018-01-10 22:37:18
回答 1查看 161关注 0票数 0

如何从subprocess.call()方法执行的多列输出中提取信息?

我有这个命令要运行:

代码语言:javascript
复制
test = subprocess.call('kubectl get ingress -o wide', shell=True)
print(test)

它将响应返回为:

代码语言:javascript
复制
NAME      HOSTS     ADDRESS         PORTS     AGE
gateway   *         35.202.20.241   80        52m

我想检索地址列值以获取IP地址。

我该如何实现这个场景呢?

EN

回答 1

Stack Overflow用户

发布于 2018-01-10 23:37:41

在Python语言中,subprocess.call函数只返回errorcode,如0、1等。要获得命令的实际输出,可以使用subprocess.check_output函数。

在Shell中,awk可以很大程度上帮助您使用print $3这样的列号来提取列。要排除行标题,请使用类似if (NR>1)的条件。

这里有一个如何实现它的例子。

代码语言:javascript
复制
import subprocess
address_col = subprocess.check_output("kubectl get ingress -o wide | awk '{ if(NR>1) print $3; }'", shell=True)
addresses = address_col.splitlines()
print addresses
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48189768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档