为什么docopt在解析参数后会退出脚本?

时间:2016-12-22 12:46:37

标签: python docopt

我现在使用docopt一段时间,在新脚本上我无法通过参数解析:

# coding=utf-8
"""
API server for the infoscreen frontends

Usage:
    python3 webserver.py [options]

Options:
    --bind ADDRESS  address to bind to  [default: 0.0.0.0]
    --galarmclock URL  URL for the galarmclock API [default: http://10.100.10.202:8082]
    --loglevel LOG  logging level   [default: logging.DEBUG]
    --console   log to console [default: False]
    --syslog    log to syslog [default: False]

"""

import docopt

# process arguments
args = docopt.docopt(__doc__)
print(args)

所有参数(参数)都是可选的,并且有默认设置,为什么脚本会停止?

C:\Python3\python.exe C:/tst.py
Usage:
    python3 webserver.py [options]

Process finished with exit code 1

1 个答案:

答案 0 :(得分:1)

问题在于使用部分:

Usage:
    python3 webserver.py [options]

Docopt期望使用部分中的第一个字符串是您的程序,而不是python。所以docopt会将此解释为python3作为您的程序,并且它总是需要一个名为webserver.py的命令。如果删除python3部分,它应该可以正常工作:

Usage:
    webserver.py [options]

来自docopt's documentation我们有:

  

关键字用法之间出现的文本:(不区分大小写)和明显空行被解释为使用模式列表。使用后的第一个单词:被解释为程序的名称。