Укажите допустимые значения для аргументов, используя 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
Допустим, что есть пользователь, незнакомый с моей системой, и он должен знать правильные значения для значений битов.
Есть ли способ указать это с помощью оператора использования? Я перепробовал несколько вещей и ничего не получалось.
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__)