使用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

假设有一个用户不熟悉我的系统,他需要知道比特值的正确值。

有什么方法可以使用usage语句来指定吗?

您可以在__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选项,您可以在调用docopt()函数时捕获DocoptExit异常并在当时打印__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__)

最新更新