首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >接受来自docopt的任意选项

接受来自docopt的任意选项
EN

Stack Overflow用户
提问于 2017-06-09 20:19:28
回答 1查看 362关注 0票数 3

通过查看docopt文档和示例,我似乎找不到这个功能,但我觉得它应该存在,所以我想我应该要求确认。

我正在为Python使用docopt,并且希望能够允许任意选项。用例是一个命令行模板实用程序-所以任意的键值会很方便。

代码语言:javascript
复制
"""Templator

Usage:
    templator <template> [--arbitrary-option=<value>]...
"""

希望这个例子能说明我所追求的东西。也许像--*=<value>这样的东西会是编写它的另一种方式。

编辑:

这是我目前的解决方案,它采用键值对。但是,这些是由空格分隔的,因此很难弄清楚什么是长语句的键和值。

templator <template> (<key> <value>)...

然后在python脚本中(对于对此解决方案感兴趣的任何人)

代码语言:javascript
复制
arguments = docopt(__doc_)
arbitrary_kwargs = dict(zip(arguments['<key>'], arguments['<value>']))

拥有key=value语法将是最理想的-如果可能的话。

EN

回答 1

Stack Overflow用户

发布于 2017-09-10 00:15:02

也许你可以用

代码语言:javascript
复制
"""Templator

Usage:
    templator <template> [-c <name>=<value>]...
"""

这就是docopt/examples/git/git.py所做的。

下面是一个测试示例:

代码语言:javascript
复制
bash-3.2$ cat test.py
""" Usage:
    Templator [-c <name>=<value>]...
"""
import sys, docopt
args = docopt.docopt(__doc__, version='0.0.1-alpha')
print str(args)

bash-3.2$ python test.py
{'-c': 0,
 '<name>=<value>': []}

bash-3.2$ python test.py -c foo=1
{'-c': 1,
 '<name>=<value>': ['foo=1']}

bash-3.2$ python test.py -c foo=1 -c baz=2
{'-c': 2,
 '<name>=<value>': ['foo=1', 'baz=2']}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44457671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档