Разработка иерархической программы CLI. Что-то вроде:
$ python -m foo -'{' -c 'wow' -b 'has' -d 55 -'}' \
-'{' -c 'haz' -b 'wow' -'}' \
-'{' -d 56 -'}'
Что я хотел бы return
:
[
{ 'c': 'wow', 'b': 'has', 'd': 55 },
{ 'c': 'haz', 'b': 'wow' },
{ 'd': 56 }
]
Основной вопрос: как мне построить это в argparse
, т.е. без отдельной функции, которая запускается после vars(parser.parse_args())
?
Вспомогательный вопрос: строит ли иерархии, подобные этой, в интерфейсе CLI, т. е. не во внешнем файле json или как type=yaml.loads
, но как должный Свойство / значения CLI нарушают какое-то соглашение, что должно заставить меня пересмотреть этот дизайн?
PS: я могу создать это просто без argparse, используя sys.argv
, один дополнительный list
и область видимости скаляр. Но argparse
даст мне авто-помощь, автозаполнение, значения по умолчанию, безопасность типов и многое другое ... поэтому предпочел бы использовать его.
РЕДАКТИРОВАТЬ: sys.argv[1:]
пример:
[ '-m', 'foo', '-{', '-c', 'wow', '-b', 'has', '-d', '55', '-}',
'-{', '-c', 'haz', '-b', 'wow', '-}', '-{', '-d', '56', '-}' ]