gpt4 book ai didi

python - 使用带有可选参数的 docopt 双破折号选项?

转载 作者:行者123 更新时间:2023-11-28 19:18:11 27 4
gpt4 key购买 nike

使用 docopt,有没有办法制作一个双虚线参数,可以使用和不使用等号?

我希望以下两个命令都使 --tls 为真:

cmd --tls
cmd --tls=true

我似乎只能通过使用让一个或另一个工作

Options:
--tls

Options:
--tls=false

用逗号分隔似乎不起作用

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 大写可能会出现错误:https://github.com/docopt/docopt/issues/460

另一种选择:

"""
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

这个给你 --argument 但不能在 --argument 之后有 =

关于python - 使用带有可选参数的 docopt 双破折号选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30923429/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com