使用 docopt 为参数指定有效值

Specify valid values for arguments using 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 选项,你可以在调用 [=20] 时捕获 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__)