Как отобразить вывод пары «ключ-значение» команды bash с использованием python - PullRequest
0 голосов
/ 10 апреля 2019

Ниже приведена выходная команда нейтрон-сети show, это выходные данные команды openstack. Я хочу отобразить значение name, provider: network_type и provider: значение сегментации в одной строке. Я пробовал 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"
}^

1 Ответ

0 голосов
/ 10 апреля 2019

сначала вы должны сделать это json type. Вы можете сделать это с помощью этого кода:

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

затем преобразовать его в dict:

import json
result_json = json.loads(result)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...