我需要使用python3.7的docopt上的一些基本帮助。我正在pyCharm中使用。 我试图运行docopt.org网站上显示的示例代码。但是系统抛出使用错误。 我通过pip install docopt安装了doctop,版本为0.6.2。 我发现一个带有相同错误消息的线程,但是用户中没有文档字符串,因此这对他不起作用。
代码如下:
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""Naval fate.
Usage:
naval_fate.py ship new <name>...
naval_fate.py ship <name> move <x> <y> [ --speed=<kn>]
naval_fate.py ship shoot <x> <y>
naval_fate.py mine (set|remove) <x> <y> [--moored|--drifting}
naval_fate.py -h| --help
naval_fate.py --version
Options:
-h --help Show this screen.
--version Show version.
--speed=<kn> Speed in knots [default: 10].
-- moored Moored (anchored) mine.
-- drifting Drifting mine.
"""
from docopt import docopt
if __name__ == '__main__':
arguments = docopt(__doc__, version='1')
print(arguments)
这是错误:
...\Scripts\python.exe
.../naval_fate.py
Traceback (most recent call last):
File
".../naval_fate.py", line 27, in <module>
arguments = docopt(__doc__, version='1')
File "...\lib\site-packages\docopt.py", line 558, in docopt
DocoptExit.usage = printable_usage(doc)
File "...\lib\site-packages\docopt.py", line 466, in printable_usage
usage_split = re.split(r'([Uu][Ss][Aa][Gg][Ee]:)', doc)
File "C:\Python\Python37\Lib\re.py", line 213, in split
return _compile(pattern, flags).split(string, maxsplit)
TypeError: expected string or bytes-like object
Process finished with exit code 1
我尝试过的事情:
例如
from docopt
...
arguments = docopt.docopt(__doc__, version='1')
代替
from docopt import docopt
...
arguments = docopt(__doc__, version='1')
但这一切都没有帮助。有人有主意吗? 到目前为止,谢谢。
答案 0 :(得分:0)
好吧,我找到了!是“用法”部分行尾的花括号。
naval_fate.py mine (set|remove) <x> <y> [--moored|--drifting}
将其更改为]后,一切正常。
希望我可以帮助别人解决这个小(大)错误。