Принятие произвольных опций от docopt
Просматривая документацию и примеры документации docopt, я не могу найти эту функцию, но я чувствую, что она должна существовать, поэтому я решила попросить об этом.
Я использую docopt для Python и хочу иметь возможность разрешать произвольные параметры. Вариант использования - это утилита для создания шаблонов командной строки, поэтому удобные значения ключей будут полезны.
"""Templator
Usage:
templator <template> [--arbitrary-option=<value>]...
"""
Надеюсь, этот пример наглядно демонстрирует то, что я ищу. Может быть что-то вроде --*=<value>
был бы альтернативный способ написания этого.
РЕДАКТИРОВАТЬ:
Вот мое текущее решение, которое принимает пары ключевых значений. Тем не менее, они разделены пробелами, поэтому может быть трудно понять, что является ключами и значениями для длинных операторов.
templator <template> (<key> <value>)...
Затем в скрипте Python (для тех, кто заинтересован в этом решении)
arguments = docopt(__doc_)
arbitrary_kwargs = dict(zip(arguments['<key>'], arguments['<value>']))
имеющий key=value
Синтаксис был бы идеальным - если это возможно.
1 ответ
Возможно, вы могли бы использовать
"""Templator
Usage:
templator <template> [-c <name>=<value>]...
"""
это то, что делает docopt/examples/git/git.py.
Вот тестовый пример:
bash-3.2$ cat test.py
""" Usage:
Templator [-c <name>=<value>]...
"""
import sys, docopt
args = docopt.docopt(__doc__, version='0.0.1-alpha')
print str(args)
bash-3.2$ python test.py
{'-c': 0,
'<name>=<value>': []}
bash-3.2$ python test.py -c foo=1
{'-c': 1,
'<name>=<value>': ['foo=1']}
bash-3.2$ python test.py -c foo=1 -c baz=2
{'-c': 2,
'<name>=<value>': ['foo=1', 'baz=2']}