Python 如何防止docopt吞下一个选项?

Python 如何防止docopt吞下一个选项?,python,command-line,docopt,Python,Command Line,Docopt,我正在尝试使用docopt创建一个命令行界面。以下是我的文件的简化版本: #!/usr/bin/env python """ Test program. Usage: test.py [options] Options: -a <input> -b -c -d """ import docopt print docopt.docopt(__doc__) Docopt将-b标志视为-a标志的参数,而不是将输入视为无效而拒绝。有没有什么简单的方法可以检

我正在尝试使用docopt创建一个命令行界面。以下是我的文件的简化版本:

#!/usr/bin/env python
"""
Test program.

Usage:
  test.py [options]

Options:
  -a <input>    
  -b
  -c
  -d
"""
import docopt

print docopt.docopt(__doc__)

Docopt将-b标志视为-a标志的参数,而不是将输入视为无效而拒绝。有没有什么简单的方法可以检测到这一点,或者让docopt拒绝接受这种格式错误的输入?

关于short选项有一些含糊不清的地方:最好使用-option=ARG long选项:

-o-选项 以一个或两个破折号开头的单词,除了-,-by 其本身被解释为短一个字母或长选项, 分别

- Short options can be "stacked" meaning that -abc is equivalent to -a -b -c.
- Long options can have arguments specified after space or equal "=" sign: --input=ARG is equivalent to --input ARG.
-Short options can have arguments specified after optional space: -f FILE is equivalent to -fFILE.
注意,写-input ARG而不是-input=ARG是不明确的, 这意味着无法判断ARG是选项的参数还是参数 位置参数。在使用模式中,这将被解释为 仅当选项的描述包含在下面时才带参数的选项 提供了这一选择。否则将被解释为单独的 选项和位置参数

对于-f文件和-fFILE表示法,也存在同样的歧义。虽然在 在后一种情况下,无法判断这是否是一个数字 堆叠短选项,或带参数的选项。这些符号 仅当选项的 提供了描述


关于short选项有一些含糊不清的地方:最好使用-option=ARG long选项:

-o-选项 以一个或两个破折号开头的单词,除了-,-by 其本身被解释为短一个字母或长选项, 分别

- Short options can be "stacked" meaning that -abc is equivalent to -a -b -c.
- Long options can have arguments specified after space or equal "=" sign: --input=ARG is equivalent to --input ARG.
-Short options can have arguments specified after optional space: -f FILE is equivalent to -fFILE.
注意,写-input ARG而不是-input=ARG是不明确的, 这意味着无法判断ARG是选项的参数还是参数 位置参数。在使用模式中,这将被解释为 仅当选项的描述包含在下面时才带参数的选项 提供了这一选择。否则将被解释为单独的 选项和位置参数

对于-f文件和-fFILE表示法,也存在同样的歧义。虽然在 在后一种情况下,无法判断这是否是一个数字 堆叠短选项,或带参数的选项。这些符号 仅当选项的 提供了描述


现在这基本上是一个设计决策,该选项的参数可以是任意字符串。我们正在讨论这是否是一个好的决定。

现在这基本上是一个设计决定,该选项的参数可以是任意字符串。我们正在讨论这是否是一个好的决定