9

我想以一种可以多次指定一个选项(我们称之为comment )的方式设计我的命令行应用程序,例如,

$ ./my_app.py --comment="Comment 1" --comment="Comment 2"

这可以用docopt完成吗?我检查了 docopt 主页,但找不到对同一可选参数多次出现的任何引用。

4

2 回答 2

5

作为参考,可以在 github上找到官方文档。

...要回答您的特定问题,您可以使用带有可选选项的椭圆,[--my-option]并指定您的选项带有参数。

[--my-option=ARG]...[--my-option=<arg>]...

例子:

"""
Usage:
    my_program [--comment=ARG]... FILE

Arguments:
    FILE       An argument for passing in a file.

Options:
    --comment  Zero or more comments
"""

通过指定它来[--comment=<arg>]...确保 opt['--comment'] 是所有指定注释的列表。

执行:my_program --comment=ASDF --comment=QWERTY my_file

导致:

if __name__ == '__main__':
    opts = docopt(__doc__)
    opts['--comment'] == ['ASDF', 'QWERTY']
    opts['FILE'] == 'my_file'
于 2014-03-07T01:42:40.753 回答
3

您可以使用...来指示重复元素并[ ]指示它是可选的:

my_program [comment]...

这表示comment是可选的并且可以重复。

于 2013-12-09T10:35:33.280 回答