перенаправление вывода команды в переменную в python
подскажите пожалуйста, есть команда:
nova —os-project-name test1 —insecure quota-show —detail
она для просмотра квот openstack, имеет вывод в следующем виде:
+----------------------+----------------------------------------------+
| Quota | Limit |
+----------------------+----------------------------------------------+
| instances | {'reserved': 0, 'limit': 10, 'in_use': 0} |
| cores | {'reserved': 0, 'limit': 20, 'in_use': 0} |
| ram | {'reserved': 0, 'limit': 51200, 'in_use': 0} |
| metadata_items | {'reserved': 0, 'limit': 128, 'in_use': 0} |
| key_pairs | {'reserved': 0, 'limit': 100, 'in_use': 0} |
| server_groups | {'reserved': 0, 'limit': 10, 'in_use': 0} |
| server_group_members | {'reserved': 0, 'limit': 10, 'in_use': 0} |
+----------------------+----------------------------------------------+
хочу парсить вывод в формат json следующим образом:
def parse(output):
result = {}
lines = [l for l in output.split("\n") if l.startswith("|")][1: ]
for line in lines:
name = line.split("|")[1].strip()
value = eval(line.split("|")[2].strip())
result[name] = value
return result
как это сделать?
Источник: Stack Overflow на русском