0

我第一次尝试使用 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 没有问题

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

有没有办法使用用法语句来指定它?我已经尝试了几件事,但没有任何工作。

4

1 回答 1

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

请注意Argumentsdocopt 不是任何特殊名称,它只是任何名称,您可以使用任何您想要的适当名称。

在上面,该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__不指定--helpor-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__)
于 2015-07-24T04:12:32.280 回答