为什么参数被解析为布尔值?

Why is a parameter parsed as a bool?

我通常使用docopt来处理命令行参数,但我现在遇到了一个意外解析参数的情况(这一定是我的一个愚蠢的错误,因为它总是很好用)

"""
API to do something

Usage:
    api.py [options]

Options:
    --port PORT     port to listen on   [default: 64645]
    --url   URL     elasticsearch address   [default: http://elk.example.com:9200]
"""

这是通过 conf = docopt.docopt(__doc__) 调用解析的,之后我将 conf 设置为

{
    '--port': '64645',
    '--url': False
}

--url 部分不正确,但我不明白为什么。

是因为--urlURL之间的空格太多,试试:

"""
API to do something

Usage:
    api.py [options]

Options:
    --port PORT     port to listen on   [default: 64645]
    --url URL       elasticsearch address   [default: http://elk.example.com:9200]
"""

摘自official documentation:

To specify that an option has an argument, put a word describing that argument after one space or "=" sign.

Use two spaces to separate options with their informal description.