Почему параметр анализируется как 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
часть не верна, но я не могу понять почему.
2 ответа
Решение
Это потому, что между ними слишком много пробелов --url
а также URL
, пытаться:
"""
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]
"""
Взято из официальной документации:
Чтобы указать, что опция имеет аргумент, поместите слово, описывающее этот аргумент, после одного пробела или знака "=".
Используйте два пробела для разделения опций с их неформальным описанием.