我想使用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}当只传递了一个-v,并且:
{'-v': 3}如果,比如说,用户传递了-vvv。这与 action in argparse的功能基本相同。
发布于 2013-08-28 12:18:45
在挖掘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}` 符号"...“也可以与参数和选项一起使用,这些参数和选项与参数的方式基本相同,只需点击上面的链接即可。
发布于 2014-05-09 15:05:41
(这只是对上面的评论,但作为评论会变得尴尬。)
这可以扩展到将列表作为参数传递:
"""
Usage:
program (--opt=OPT ...)
Options:
--opt=OPT An option that can be specified multiple times to form a list
"""
import docopt
print docopt.docopt(__doc__)我们把这个作为
python test.py --opt=first_option
{'--opt': ['first_option']}
python test.py --opt=first_option --opt="second in line"
{'--opt': ['first_option', 'second in line']}诸若此类。
https://stackoverflow.com/questions/18468123
复制相似问题