LINUX.ORG.RU

Как отформатировать текст Python-массива, перенести по строкам, добавить отступы?

 , , ,


1

1

У меня есть такой консольный выхлоп:

ok: [km1] => {
"msg": "{ 'msg': u'All items completed', 'changed': True, 'results': [{'_ansible_parsed': True, '_ansible_item_result': True, u'end': u'2019-11-29 09:15:26.298216', '_ansible_no_log': False, u'stdout': u'', u'cmd': u'cd /home/user/work/gitRepos/logging_module ; git checkout /home/user/work/gitRepos/logging_module', u'changed': True, 'item': [u'vasya@192.168.1.10:/home/git/logging_module.git', u'master', u'/home/user/work/gitRepos/logging_module'], u'delta': u'0:00:00.004221', u'stderr': u'', u'rc': 0, 'invocation': {'module_name': u'command', u'module_args': {u'creates': None, u'executable': None, u'_uses_shell': True, u'_raw_params': u'cd /home/user/work/gitRepos/logging_module ; git checkout /home/user/work/gitRepos/logging_module', u'removes': None, u'warn': True, u'chdir': None}}, 'stdout_lines': [], u'start': u'2019-11-29 09:15:26.293995', u'warnings': []}, {'_ansible_parsed': True, '_ansible_item_result': True, u'end': u'2019-11-29 09:15:26.464896', '_ansible_no_log': False, u'stdout': u'', u'cmd': u'cd /home/user/work/gitRepos/iks ; git checkout /home/user/work/gitRepos/iks', u'changed': True, 'item': [u'vasya@192.168.1.10:/home/git/iks.git', u'loaderForBaseModules', u'/home/user/work/gitRepos/iks'], u'delta': u'0:00:00.004814', u'stderr': u'', u'rc': 0, 'invocation': {'module_name': u'command', u'module_args': {u'creates': None, u'executable': None, u'_uses_shell': True, u'_raw_params': u'cd /home/user/work/gitRepos/iks ; git checkout /home/user/work/gitRepos/iks', u'removes': None, u'warn': True, u'chdir': None}}, 'stdout_lines': [], u'start': u'2019-11-29 09:15:26.460082', u'warnings': []}, {'_ansible_parsed': True, '_ansible_item_result': True, u'end': u'2019-11-29 09:15:26.637842', '_ansible_no_log': False, u'stdout': u'', u'cmd': u'cd /home/user/work/gitRepos/idk2 ; git checkout /home/user/work/gitRepos/idk2', u'changed': True, 'item': [u'vasya@192.168.1.10:/home/git/idk2.git', u'loaderForBaseModules', u'/home/user/work/gitRepos/idk2'], u'delta': u'0:00:00.004030', u'stderr': u'', u'rc': 0, 'invocation': {'module_name': u'command', u'module_args': {u'creates': None, u'executable': None, u'_uses_shell': True, u'_raw_params': u'cd /home/user/work/gitRepos/idk2 ; git checkout /home/user/work/gitRepos/idk2', u'removes': None, u'warn': True, u'chdir': None}}, 'stdout_lines': [], u'start': u'2019-11-29 09:15:26.633812', u'warnings': []}]}\n{'msg': u'All items completed', 'changed': True, 'results': [{'_ansible_parsed': True, '_ansible_item_result': True, u'end': u'2019-11-29 09:15:26.298216', '_ansible_no_log': False, u'stdout': u'', u'cmd': u'cd /home/user/work/gitRepos/logging_module ; git checkout /home/user/work/gitRepos/logging_module', u'changed': True, 'item': [u'vasya@192.168.1.10:/home/git/logging_module.git', u'master', u'/home/user/work/gitRepos/logging_module'], u'delta': u'0:00:00.004221', u'stderr': u'', u'rc': 0, 'invocation': {'module_name': u'command', u'module_args': {u'creates': None, u'executable': None, u'_uses_shell': True, u'_raw_params': u'cd /home/user/work/gitRepos/logging_module ; git checkout /home/user/work/gitRepos/logging_module', u'removes': None, u'warn': True, u'chdir': None}}, 'stdout_lines': [], u'start': u'2019-11-29 09:15:26.293995', u'warnings': []}, {'_ansible_parsed': True, '_ansible_item_result': True, u'end': u'2019-11-29 09:15:26.464896', '_ansible_no_log': False, u'stdout': u'', u'cmd': u'cd /home/user/work/gitRepos/iks ; git checkout /home/user/work/gitRepos/iks', u'changed': True, 'item': [u'vasya@192.168.1.10:/home/git/iks.git', u'loaderForBaseModules', u'/home/user/work/gitRepos/iks'], u'delta': u'0:00:00.004814', u'stderr': u'', u'rc': 0, 'invocation': {'module_name': u'command', u'module_args': {u'creates': None, u'executable': None, u'_uses_shell': True, u'_raw_params': u'cd /home/user/work/gitRepos/iks ; git checkout /home/user/work/gitRepos/iks', u'removes': None, u'warn': True, u'chdir': None}}, 'stdout_lines': [], u'start': u'2019-11-29 09:15:26.460082', u'warnings': []}, {'_ansible_parsed': True, '_ansible_item_result': True, u'end': u'2019-11-29 09:15:26.637842', '_ansible_no_log': False, u'stdout': u'', u'cmd': u'cd /home/user/work/gitRepos/idk2 ; git checkout /home/user/work/gitRepos/idk2', u'changed': True, 'item': [u'vasya@192.168.1.10:/home/git/idk2.git', u'loaderForBaseModules', u'/home/user/work/gitRepos/idk2'], u'delta': u'0:00:00.004030', u'stderr': u'', u'rc': 0, 'invocation': {'module_name': u'command', u'module_args': {u'creates': None, u'executable': None, u'_uses_shell': True, u'_raw_params': u'cd /home/user/work/gitRepos/idk2 ; git checkout /home/user/work/gitRepos/idk2', u'removes': None, u'warn': True, u'chdir': None}}, 'stdout_lines': [], u'start': u'2019-11-29 09:15:26.633812', u'warnings': []}]}"
}


Это выхлоп Ansible, вроде как это питоновский массив. Мне нужно его посмотреть в виде форматированной структуры, чтобы один параметр в одну строку и с правильными отступами.

Как это сделать?

- Локально на машине
- Через какой-нибудь online-beautifier

?

★★★★★

у тя там два словаря.

pbpaste |python -c 'import pprint,sys;pprint.pprint(eval( eval(sys.stdin.read())["msg"].replace("}\n{", "},{") ) )'

pawnhearts ★★★★★
()
Последнее исправление: pawnhearts (всего исправлений: 2)

Я как то извращался с подобными штуками, может тебе пригодится:

Делаешь плейбук с

debug: var: hostvars[inventory_hostname]

и запускаешь его как-то так:

ANSIBLE_STDOUT_CALLBACK=json ansible-playbook print_facts.yml | jq -r '.plays[0].tasks[0].hosts | to_entries[] | "\(.key), \(.value.ansible_facts.ansible_kernel)"'
LeNiN ★★
()

В питоне невозможна обфускация, говорили они. Мухахазаза!

anonymous
()
from json import dumps
print(dumps(your_data, indent=4))

Ну, или через black прогони.

beresk_let ★★★★★
()
Последнее исправление: beresk_let (всего исправлений: 2)

import json; json.dumps(msg, indent=2)

thunar ★★★★★
()
8 сентября 2020 г.
Ответ на: комментарий от E

Можно и так, но лучше попробуйте вим.

Владимир

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.