【问题标题】:Why is a parameter parsed as a bool?为什么将参数解析为布尔值?
【发布时间】:2016-11-11 05:57:26
【问题描述】:

我通常使用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 部分不正确,但我不明白为什么。

【问题讨论】:

    标签: docopt


    【解决方案1】:

    是因为--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]
    """
    

    【讨论】:

    • 对我来说看起来像一个错误
    • 我不认为这是一个错误,正如文档中提到的那样:“使用两个空格来分隔选项及其非正式描述。”
    【解决方案2】:

    取自official documentation

    要指定一个选项有一个参数,请在一个空格或“=”符号之后放置一个描述该参数的词。

    使用两个空格将选项与其非正式描述分开。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-10
      • 1970-01-01
      • 1970-01-01
      • 2011-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多