为什么此代码失败并出现以下异常?
"""my_program - for doing awesome stuff
Usage: my_program [--foo]
Options:
--foo - this will do foo
"""
import docopt
args = docopt.docopt(doc=__doc__)
Run Code Online (Sandbox Code Playgroud)
例外:
Traceback (most recent call last):
File "/tmp/post.py", line 10, in <module>
args = docopt.docopt(doc=__doc__)
File "/Users/rbednark/.virtualenvs/docopt-python2/lib/python3.5/site-packages/docopt.py", line 560, in docopt
pattern = parse_pattern(formal_usage(DocoptExit.usage), options)
File "/Users/rbednark/.virtualenvs/docopt-python2/lib/python3.5/site-packages/docopt.py", line 373, in parse_pattern
result = parse_expr(tokens, options)
File "/Users/rbednark/.virtualenvs/docopt-python2/lib/python3.5/site-packages/docopt.py", line 381, in parse_expr
seq = parse_seq(tokens, options)
File "/Users/rbednark/.virtualenvs/docopt-python2/lib/python3.5/site-packages/docopt.py", line 396, in parse_seq
atom = parse_atom(tokens, options)
File "/Users/rbednark/.virtualenvs/docopt-python2/lib/python3.5/site-packages/docopt.py", line 413, in parse_atom
result = pattern(*parse_expr(tokens, options))
File "/Users/rbednark/.virtualenvs/docopt-python2/lib/python3.5/site-packages/docopt.py", line 381, in parse_expr
seq = parse_seq(tokens, options)
File "/Users/rbednark/.virtualenvs/docopt-python2/lib/python3.5/site-packages/docopt.py", line 396, in parse_seq
atom = parse_atom(tokens, options)
File "/Users/rbednark/.virtualenvs/docopt-python2/lib/python3.5/site-packages/docopt.py", line 415, in parse_atom
raise tokens.error("unmatched '%s'" % token)
docopt.DocoptLanguageError: unmatched '['
Run Code Online (Sandbox Code Playgroud)
docopt版本:0.6.2
Python版本:2.7.10,3.5.1
由于--foo此行之后只有一个空格,因此失败:
--foo - this will do foo
Run Code Online (Sandbox Code Playgroud)
通过添加另一个空格修复它--foo:
--foo - this will do foo
Run Code Online (Sandbox Code Playgroud)
根据文件:
使用两个空格将选项与其非正式描述分开:
--verbose More text. # BAD, will be treated as if verbose option had
# an argument "More", so use 2 spaces instead
-q Quit. # GOOD
-o FILE Output file. # GOOD
--stdout Use stdout. # GOOD, 2 spaces
Run Code Online (Sandbox Code Playgroud)
附加参考:docopt源代码
| 归档时间: |
|
| 查看次数: |
531 次 |
| 最近记录: |