docop中的相关选项

2024-09-28 21:38:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道我是否可以在docopt中有依赖选项

示例:

"""
Description:
  Flash a system with the manufacturing software from the specifiedx folder.

Usage:
  flash_drop.py (--drop-dir=<DIR>) [--factory-reset=<BOOL>] [--flash-all=<BOOL>] [--flash-system1=<BOOL> | --flash-system2=<BOOL>]
  flash_drop.py -h | --help
  flash_drop.py --version

Options:
  -h --help                 Show this screen.
  --version                 Show version.
  --drop-dir=DIR            Path to the drop directory
  --factory-reset=BOOL          Factory reset the chips on all selected devices. [default: False]
  --flash-all=BOOL              Flash all devices. [default: False]
  --flash-system1=BOOL          Flash first system. [default: False]
  --flash-system2=BOOL          Flash second system. [default: False]
"""

也就是说,如果没有选择上一个选项,则忽略该选项的值。例如,--flash-system2的值被忽略,除非--flash-system1被设置


Tags: thepyfalsedefaultversion选项allsystem
2条回答

如果可以修改代码,可以通过编程方式忽略它们,例如:

args['flash-system2'] = args['flash-system2'] if args['flash-system1'] else None

或者

if ('flash-system2' in args) and ('flash-system1' not in args):
    del args['flash-system2']

就在解析完参数之后

不能使用单一的使用模式,但可以使用两种模式:

Usage:
  flash_drop.py ( drop-dir=<DIR>) [options] [ flash-system1=<BOOL>]
  flash_drop.py ( drop-dir=<DIR>) [options]  flash-system1=<BOOL>  flash-system2=<BOOL>

但最好使用三种模式,更易于阅读:

Usage:
  flash_drop.py ( drop-dir=<DIR>) [options]
  flash_drop.py ( drop-dir=<DIR>) [options]  flash-system1=<BOOL>
  flash_drop.py ( drop-dir=<DIR>) [options]  flash-system1=<BOOL>  flash-system2=<BOOL>
  flash_drop.py -h |  help
  flash_drop.py  version

Live demo


附言

嗯,你可以,技术上讲,用一个单一的模式,但它开始变得很长

Usage:
  flash_drop.py ( drop-dir=<DIR>) [options] [( flash-system1=<BOOL>) | ( flash-system1=<BOOL>  flash-system2=<BOOL>)]

线可能会断开,所以:

Usage:
  flash_drop.py ( drop-dir=<DIR>) [options] 
                [( flash-system1=<BOOL>) | ( flash-system1=<BOOL>  flash-system2=<BOOL>)]

我个人更喜欢三种模式的解决方案

相关问题 更多 >