Docopt可选参数的多个值

2024-04-27 22:30:45 发布

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

我想用docopt解析一个具有多个值的可选参数。下面是使用示例。你知道吗

my_program.py --loc pcg acc
# or anything that achieve similar result

在解析之后,我希望会有这样一个python列表

arguments["--loc"] = ["pcg", "acc"]

我浏览了一下,通过传递nargs参数来确定这在argparse中是否可行。你知道吗

我在docopt中找不到任何类似的方法,这在docopt中可行吗?如果没有,还有什么选择?你知道吗

我可以考虑的另一种方法是让用户指定用逗号分隔的值,并在解析过程中手动拆分它,如下所示。你知道吗

my_program.py [--loc=<comma_separated_str>]

python代码中

locs = arguments["--loc"].split(",") if arguments["--loc"] else []

然而,这看起来很难看,所以我正在寻找一种合适的方法来使用docopt。你知道吗


Tags: or方法py示例参数thatmydocopt
1条回答
网友
1楼 · 发布于 2024-04-27 22:30:45

一种方法是使用省略号(…)运算符,这样一个选项可以用方括号重复零次或多次,或者用括号重复一次或多次。例如

"""Usage: my_program.py  help
       my_program.py [ loc=<loc>]...
"""

from docopt import docopt
print(docopt(__doc__))

将给出以下输出

$ python my_program.py  loc=pcg  loc=acc
{' help': False,
 ' loc': ['pcg', 'acc']}

相关问题 更多 >