python - docopt 的选项多样性

标签 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__)

如果我用 test.py -v 运行它,我得到:

{'-v': True}

就好像我用 test.py -vv 运行它一样,它会显示用法消息(表明命令行无效)。

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

{'-v': 1}

当只传递了 1 个 -v 并且:

{'-v': 3}

比方说,如果用户传递了 -vvv。这几乎是相同的功能 the count action in argparse .

最佳答案

在挖掘 docopt(已关闭)问题列表后,I have found that the right way to represent this会是:

#!/usr/bin/env python

"""
Test program.

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

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

import docopt
print docopt.docopt(__doc__)

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

{'-v': 3}

符号“...”也可以与参数和选项一起使用,参数和选项采用几乎相同的方式获取参数,只需点击上面的链接即可获取示例。

关于python - docopt 的选项多样性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18468123/

相关文章:

python - 如何列出 ArgumentParser 实例中的所有已注册参数?

python - 如何捕获导致 argparse 在 Python 中引发错误的值

python - 使用 argparse 请求 0 或 2 个位置参数?

python - 在 Windows 上使用 pycharm 在 git bash 中激活 virtualenv

java - 错误 : Could not find or load main class

python - PyCharm 文件编号表示

command-line - 搜索并替换为批处理文件

postgresql - 使用psql命令行终端程序更新数据库

Python - 构建可执行文件时出现问题

python - 发生异常 : TypeError:only size-1 arrays can be converted to Python scalars