使用Docopt格式化用法

时间:2014-03-31 20:50:15

标签: python docopt

我在docopt中的使用说法有问题。

这就是我希望在脚本中使用的方法。可选参数(用[]定义),我希望能够一起或单独使用它们。因此-t -o-o-t应该有效。在没有-o的情况下,我无法使用-t。 如果我使用管道|来分隔它们,我不能同时使用它们。我尝试了各种组合。我似乎无法让它像id一样工作。谁能指出我哪里出错?

"""
Description:

Script does stuff

Usage:
  script.py (-d <ditem>) (-u <uitem>) (-p <pitem>) (-s <sfile>) [-t <tfile>] [-o <ofile>] [-v]
  script.py (-d <ditem>) (-l) [-t <tfile>] [-o <ofile>] [-v]
  script.py -h | --help
  script.py --version

Options:
  -v --verbose       Does stuff
  -t --tfile         Does stuff
  -o --output        Does stuff
  -l --litem         Does stuff
  -u --uitem         Does stuff
  -p --pitem         Does stuff
  -d --ditem         Does stuff
  -s --sitem         Does stuff
  -h --help          Show this screen.
  --version          Show version.
  """

2 个答案:

答案 0 :(得分:0)

我可以使用以下方法解决此问题:

通过添加使用字符串script.py (-d <ditem>) (-l) ([-t <tfile>] | [-o <ofile>]) [-v]和另一个script.py (-d <ditem>) (-l) [-t <tfile>] [-o <ofile>] [-v],我可以单独使用-t-o-t -o。但是我无法按此顺序使用它们-o -t

Description:

Script does stuff

Usage:
  script.py (-d <ditem>) (-u <uitem>) (-p <pitem>) (-s <sfile>) [-t <tfile>] [-o <ofile>] [-v]
  script.py (-d <ditem>) (-l) ([-t <tfile>] | [-o <ofile>]) [-v]
  script.py (-d <ditem>) (-l) [-t <tfile>] [-o <ofile>] [-v]
  script.py -h | --help
  script.py --version

答案 1 :(得分:0)

To allow -t along, -o along, -t and -o together

Script does stuff.

Usage:
   script.py [-t] [-o] 

Options:
  -t --tfile         Does stuff
  -o --output        Does stuff

If it is an error when both -t and -o are absent

Script does stuff.

Usage:
   script.py -t
   script.py -o
   script.py -t -o

Options:
  -t --tfile         Does stuff
  -o --output        Does stuff