2016-10-12 64 views
2

我通常使用docopt处理命令行参数,但是我现在有其中的参数被意外地解析的情况下(必须是我的一个愚蠢的错误,因为它总是伟大工程)为什么参数被解析为bool?

""" 
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部分是不正确的,但我不明白为什么。

回答

4

这是因为有--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] 
""" 
+1

对我来说看起来像一个错误 – yandreiy

+1

我不认为它是一个错误,因为它在文档中提到:“使用两个空格来将选项与其非正式描述分开。 –

0

official documentation摘自:

要指定一个选项有一个参数,把描述一个字参数后面一个空格或“=”号。

使用两个空格用它们的非正式描述分隔选项。

相关问题