选项多样性与docopt

And*_*jos 4 python command-line argparse docopt

我想docopt用于解析可以多次接收相同选项的命令行.有人可以解释一下怎么做吗?

一个测试例子:

#!/usr/bin/env python

"""
Test program.

Usage:
    test.py -v

Options:
    -v  Flag that should be counted
"""

import docopt
print docopt.docopt(__doc__)
Run Code Online (Sandbox Code Playgroud)

如果我用这个test.py -v,我得到:

{'-v': True}
Run Code Online (Sandbox Code Playgroud)

如果我运行它test.py -vv,它会显示用法消息(表示命令行无效).

我想调整选项文档,以便docopt返回给我:

{'-v': 1}
Run Code Online (Sandbox Code Playgroud)

当只有1 -v通过时:

{'-v': 3}
Run Code Online (Sandbox Code Playgroud)

比方说,如果用户通过了-vvv.这几乎与argparse中count操作功能相同.

And*_*jos 7

在挖掘docopt(已关闭)问题列表后,我发现表示这个问题的正确方法是:

#!/usr/bin/env python

"""
Test program.

Usage:
    test.py (-v ...)

Options:
    -v  Flag that should be counted
"""

import docopt
print docopt.docopt(__doc__)
Run Code Online (Sandbox Code Playgroud)

也就是说,必须使用符号" ..."来表示选项可能多次出现.在这种情况下,该选项将被正确计算.如果调用上述程序test.py -vvv,它将正确打印:

{'-v': 3}

符号" ..."也可以与带有参数的参数和选项一起使用,只需点击上面的链接就可以得到一个例子.