使用docopt

时间:2015-07-24 03:01:39

标签: python 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 个答案:

答案 0 :(得分: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选项运行上述doc时,您将获得结果 -

>>>> 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__)