首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Python subprocess.call的输出中的列中获取一个值

从Python subprocess.call的输出中的列中获取一个值
EN

Stack Overflow用户
提问于 2018-07-03 11:13:30
回答 4查看 2K关注 0票数 0

在解释我的问题之前,我想提一下,我在StackOverflow看过其他各种问题,但没有找到任何与我的问题相关的解决方案。所以,这就是为什么不标记为复制,请!

我正在处理一个Python(3.6)项目,在这个项目中,我需要运行一个终端命令,并从输出中解析一个以列形式出现的值。

下面是我运行的命令:

代码语言:javascript
复制
output = subprocess.call('kubectl get svc', shell=True)

这是输出:

代码语言:javascript
复制
b'NAME         TYPE          CLUSTER-IP     EXTERNAL-IP     PORT(S)          AGE
kubernetes   ClusterIP      10.35.240.1     <none>          443/TCP          28m
node-app1    LoadBalancer   10.35.245.164   35.239.29.239   8000:32249/TCP   26m

现在,我需要从第二行和第四列获得EXTERNAL-IP

我怎样才能得到这个价值?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-07-03 11:37:43

您可以从shell本身提取特定的列。这样,我们就可以避免文本处理所造成的开销。

代码语言:javascript
复制
out = subprocess.check_output(["kubectl get svc | awk '{print $3}'"], shell=True)
result = out.decode().split('\n')
print(result[1])

输出:

代码语言:javascript
复制
10.0.0.1
票数 3
EN

Stack Overflow用户

发布于 2018-07-03 11:19:20

这个外壳很不错。怎么样

代码语言:javascript
复制
output = subprocess.call('kubectl get svc | tr "\t" " " | tr -s " " | cut -d " " -f 4 | tail -1', shell=True)

您还可以省略给出最后一行的tail -1,并在Python中进行拆分/过滤。

票数 2
EN

Stack Overflow用户

发布于 2018-07-03 11:31:43

你可以用熊猫来阅读数据。下面是一个完整的示例:

代码语言:javascript
复制
from StringIO import StringIO   
import pandas

x=b"""NAME         TYPE          CLUSTER-IP     EXTERNAL-IP     PORT(S)          AGE
kubernetes   ClusterIP      10.35.240.1     <none>          443/TCP          28m
node-app1    LoadBalancer   10.35.245.164   35.239.29.239   8000:32249/TCP   26m"""

dataframe = pandas.read_csv(StringIO(x), sep="\s+")

# print rows  
for index, row in dataframe.iterrows():
   print (row['NAME'], row['CLUSTER-IP'], row['PORT(S)'])

# search for a row with name node-app1 and print value in PORT(S) column:
print dataframe.loc[dataframe['NAME'] == 'node-app1']['PORT(S)'].to_string(index=False)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51153201

复制
相关文章

相似问题

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