Можно ли сказать, установил ли пользователь опцию, используя docopt?

Рассмотрим следующую простую программу.

from docopt import docopt

doc = """
Usage: ./opt.py [options]

    -h,--help         show this
    -a <option>       generic option [default: Foo]
"""

options = docopt(doc)
print options['-a']
print options

Можно ли различить в моей программе следующие два пользовательских вызова?

python Opt.py -a Foo
python Opt.py

1 ответ

Вы не можете различить, если вы определяете значение по умолчанию. Но вы можете удалить значение по умолчанию из строки документации и установить его программно.

from docopt import docopt

doc = """
Usage: ./opt.py [options]

    -h,--help         show this
    -a <option>       generic option
"""

options = docopt(doc)
if options['-a']:
    # option was defined
    ...
else:
    # option was not defined
    options['-a'] = "Foo"
    ...

Но в любом случае, для какого варианта использования это вообще понадобится?

Другие вопросы по тегам