docopt позиционные обязательные аргументы, сохраняющие разделители в имени?

Я пытаюсь очень простой скрипт на Python с только позиционными аргументами, обработанные docopt,

#!/usr/bin/env python

opt_spec = """Test

Usage: docopt_test (import | export <output_file> <output_format>)
       docopt_test (-h | --help)
       docopt_test (-v | --version)

Options:
  -h --help     Show this screen.
  -v --version     Show version.

"""

from docopt import docopt

if __name__ == '__main__':
    arguments = docopt(opt_spec, version='Test 1.0')
    print(arguments)

При запуске он напечатает:

./docopt_test.py export file.xml xml
{'--help': False,
 '--version': False,
 '<output_file>': 'file.xml',
 '<output_format>': 'xml',
 'export': True,
 'import': False}

Проблема в том, что output_file а также output_format аргументы сохраняют < а также > разделители в имени, звонки как args['output_file'] невозможно. Удаление разделителей из строки использования изменяет семантику, превращая параметры в ключевые слова.

Есть ли способ решить эту проблему, не прибегая к использованию, как args['<output_file>']?

1 ответ

Я думаю, что это считается частью диспетчеризации, которая может иметь различные языковые последствия. Есть экспериментальный проект для docopt-dispatch, который, кажется, прекрасно справляется с аннотациями Python. У меня есть программа под названием snippets, в которой я переназначаю имена аргументов в своем собственном стиле диспетчеризации, но я делаю это, вызывая args так, как ты сделал.

Другие вопросы по тегам