Укажите допустимые значения для аргументов, используя docopt

Я пытаюсь использовать docopt в первый раз. Пока что это заявление об использовании, которое у меня есть:

Test Control Program

Usage: 
  test.py bitwrite ([--off=<bits>...][--on=<bits>...])
  test.py regwrite ([regA | regB]<value>)

Options:
  -o <bits>... --off <bits>...  #Turn bits off
  -i <bits>... --on <bits>...   #Turns bits on

Итак, у меня нет проблем с test.py bitwrite -o bitA, bitB, bitC, bitD

Допустим, есть пользователь, незнакомый с моей системой, и ему нужно знать правильные значения для значений битов.

Есть ли способ указать это с помощью оператора использования? Я пробовал несколько вещей и ничего не получалось.


person Rob Hix    schedule 24.07.2015    source источник


Ответы (1)


Вы можете указать их в отдельной части __doc__ , как пример -

Test Control Program

Usage: 
  test.py bitwrite ([--off=<bits>...][--on=<bits>...])
  test.py regwrite ([regA | regB]<value>)

Options:
  -o <bits>... --off <bits>...  #Turn bits off
  -i <bits>... --on <bits>...   #Turns bits on

Arguments:

      bits: 1 - on
            0 - off

Обратите внимание, что Arguments — это не какое-то специальное имя, распознаваемое docopt, это просто любое имя, вы можете использовать любое такое подходящее имя, какое захотите.

В приведенном выше разделе Arguments будут показаны допустимые значения для битов и других аргументов.

Затем при запуске вышеуказанного документа с опцией --help вы получите результат как -

>>>> python a.py --help
Test Control Program

Usage:
  test.py bitwrite ([--off=<bits>...][--on=<bits>...])
  test.py regwrite ([regA | regB]<value>)

Options:
  -o <bits>... --off <bits>...  #Turn bits off
  -i <bits>... --on <bits>...   #Turns bits on

Arguments:

      bits: 1 - on
            0 - off

Если вы хотите показать полное __doc__ без указания опции --help или -h, вы можете поймать исключение DocoptExit при вызове функции docopt() и распечатать __doc__ в это время.

Пример -

"""Test Control Program

Usage: 
  test.py bitwrite ([--off=<bits>...][--on=<bits>...])
  test.py regwrite ([regA | regB]<value>)

Options:
  -o <bits>... --off <bits>...  #Turn bits off
  -i <bits>... --on <bits>...   #Turns bits on

Arguments:

      bits: 1 - on
            0 - off

"""
from docopt import docopt, DocoptExit


if __name__ == '__main__':
    try:
        arguments = docopt(__doc__, version='Test Control Program')
        print(arguments)
    except DocoptExit:
        print(__doc__)
person Anand S Kumar    schedule 24.07.2015