2015-03-26 2 views
0

Я пробую очень простой скрипт python с только позиционными аргументами, обработанный docopt.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>']?

ответ

0

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

Смежные вопросы