0

是否可以按照以下方式做一些事情:

Usage: 
  program submit [options]

Options:
  --user <email>            Users email address
  --documents <document>...  Documents to submit (can enter multiple)

submit --user Austin --documents doc1.txt --documents doc2.txt 

这将提供以下 JSON:

{
  submit: True,
  --user: "Austin",
  --documents: ["doc1.txt", "doc2.txt"]
}

我知道重复可选参数是可能的,我真的更喜欢在选项描述中指定,而不是必须这样做:

Usage:
  program submit [--user <email>] [--documents <document>]...

如果可能的话,有人可以告诉我如何实现这一目标吗?

4

1 回答 1

0

这是一种 hack,但它应该可以工作:

"""
Usage:
  program submit [options]

Options:
  --user <email>            Users email address
  --documents <document>...  Documents to submit (can enter multiple)

submit --user Austin --documents doc1.txt --documents doc2.txt
"""

from docopt import docopt

if __name__ == '__main__':
    arguments = docopt(__doc__.replace('[options]',
                       '[options] [--documents <document>]...'))
    print(arguments)
于 2015-01-16T11:13:21.650 回答