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
так, как ты сделал.