使用 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__)
我是第一次尝试使用 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__)