Как установить только определенные значения для параметра в docopt python?

Я пытаюсь использовать docopt для кода Python. На самом деле мне нужно установить только определенные значения для параметра. Мое использование, как показано ниже:

"""
Usage:
test.py --list=(all|available)

Options:
    list    Choice to list devices (all / available)
"""

Я пытался запустить его как: python test.py --list=all, но он не принимает значение и просто отображает строку документа.

Я хочу, чтобы значение параметра списка было либо «все», либо «доступно». Есть ли способ достичь этого?


person Abhijith Sivarajan    schedule 02.09.2016    source источник
comment
на сегодняшний день это невозможно с использованием синтаксиса docopt, см. обсуждение здесь github.com/docopt/docopt /вопросы/122   -  person hwjp    schedule 12.08.2019


Ответы (1)


Вот пример для достижения того, что вы хотите:

test.py:

"""
Usage:
  test.py list (all|available)

Options:
  -h --help     Show this screen.
  --version     Show version.

  list          Choice to list devices (all / available)
"""
from docopt import docopt

def list_devices(all_devices=True):
    if all_devices:
        print("Listing all devices...")
    else:
        print("Listing available devices...")


if __name__ == '__main__':
    arguments = docopt(__doc__, version='test 1.0')

    if arguments["list"]:
        list_devices(arguments["all"])

С помощью этого скрипта вы можете запускать такие операторы, как:

python test.py list all

or:

python test.py list available 
person BPL    schedule 02.09.2016