Python 是否使用带可选参数的docopt双破折号选项?
使用docopt,有没有一种方法可以创建一个双虚线参数,该参数可以使用等号,也可以不使用等号 我希望以下两个命令都使--tls为true:Python 是否使用带可选参数的docopt双破折号选项?,python,docopt,Python,Docopt,使用docopt,有没有一种方法可以创建一个双虚线参数,该参数可以使用等号,也可以不使用等号 我希望以下两个命令都使--tls为true: cmd --tls cmd --tls=true 我似乎只能通过使用 Options: --tls 或 用逗号分隔它们似乎不起作用 Options: --tls, --tls=false 我也有同样的问题。 我找不到解决方案,但以下是我最好的解决方案: """ Usage: test.py [tls [-
cmd --tls
cmd --tls=true
我似乎只能通过使用
Options:
--tls
或
用逗号分隔它们似乎不起作用
Options:
--tls, --tls=false
我也有同样的问题。
我找不到解决方案,但以下是我最好的解决方案:
"""
Usage:
test.py [tls [--true|--false]]
"""
from docopt import docopt
arguments = docopt(__doc__)
if arguments['tls'] and not (arguments['--true'] or arguments['--false']):
arguments['--true'] = True
因此,参数选项是:
cmd
cmd tls
cmd tls --true
cmd tls --false
请注意,这是区分大小写的,如果将TLS大写,则可能存在错误:
另一种选择:
"""
Usage:
script.py [--tls [<tlsval>]]
"""
from docopt import docopt
arguments = docopt(__doc__)
assert arguments['<tlsval>'] in (None, 'true', 'false'), "invalid tls value -- expected true or false"
这一个可以得到--参数,但不能在--参数后加上=参见如何在argparse
中执行类似操作;你也许可以从它的帮助下向后工作!这是可行的:--tls=(true | false)使用tls加密[default:true]
,但可能不是您真正想要的。考虑打开一个。
"""
Usage:
script.py [--tls [<tlsval>]]
"""
from docopt import docopt
arguments = docopt(__doc__)
assert arguments['<tlsval>'] in (None, 'true', 'false'), "invalid tls value -- expected true or false"
"""
Usage:
script.py [--MAS|--GPI [RESEND|ADD|REMOVE|SKU]]
Options:
--MAS only do MAS step
--GPI only do GPI step, optionally specify ADD/REMOVE/SKU (default is RESEND)
RESEND only GPI, strategy=RESEND (default for --GPI)
ADD only GPI, strategy=ADD
REMOVE only GPI, strategy=REMOVE
SKU only GPI, strategy=SKU
"""
from docopt import docopt
arguments = docopt(__doc__)
strategy = [k for k in ['RESEND', 'ADD', 'REMOVE', 'SKU'] if arguments[k]]
strategy = strategy[0] if strategy else "RESEND" #resend is default