如何使用python显示bash命令的键值对输出

问题描述 投票:-1回答:1

下面是输出neutron-net show命令,这是一个openstack命令输出。我想在一行中显示name,provider:network_type和provider:segmentation值的值。我已经尝试过python和混合bash脚本,但它不起作用。任何想法,这可以使用python完成?

# for i in $(neutron net-list -f value -c name); do neutron net-show -c name -c segments -f json $i ; done
{
  "segments": "{\"provider:network_type\": \"vxlan\", \"provider:physical_network\": null, \"provider:segmentation_id\": 333}\n{\"provider:network_type\": \"vlan\", \"provider:physical_network\": \"DCGW-NET1\", \"provider:segmentation_id\": 259}",
  "name": "_MGMT"
}{
  "segments": "{\"provider:network_type\": \"vlan\", \"provider:physical_network\": \"NET1\", \"provider:segmentation_id\": 388}\n{\"provider:network_type\": \"vxlan\", \"provider:physical_network\": null, \"provider:segmentation_id\": 5344}",
  "name": "sp1"
}{
  "name": "test_emma"
}{
  "segments": "{\"provider:network_type\": \"vxlan\", \"provider:physical_network\": null, \"provider:segmentation_id\": 5214}\n{\"provider:network_type\": \"vlan\", \"provider:physical_network\": \"NET1\", \"provider:segmentation_id\": 214}",
  "name": "test_MGMT"
}^
python json bash list openstack
1个回答
0
投票

首先,你应该使它成为json类型。您可以使用以下代码执行此操作:

result = result.replace("}{", "},{")
result = "[" + result + "]"
#result is the output of the command

然后将其转换为dict:

import json
result_json = json.loads(result)
© www.soinside.com 2019 - 2024. All rights reserved.