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

#python #command-line-interface #option #python-click

#python #интерфейс командной строки #python-щелкните

Вопрос:

Я создал команду Click, которая будет копировать файлы из источника в пункт назначения

Команда принимает 3 параметра :

1 — Источник файлов

2 — Назначение файлов

3 — Режим передачи (локальный, ftp)

 import click    

@click.group()
def cli():
    pass

@cli.command()
@click.argument('source')
@click.argument('destination')
@click.option('--mode', required = True)
def copy(source, destination, mode):

    print("copying files from "   source   " to "   destination   "using "   mode   " mode")


if __name__ == '__main__':
    cli() 
  

Когда я вызываю скрипт, используя это : command.py copy "C:/" "D:/" --mode=network

Я получаю следующий вывод : copying files from C:/ to D:/using network mode

Как вы можете видеть, я указал сеть в качестве режима, но мне нужны только два варианта: локальный или ftp

Итак, как я могу использовать Click для установки допустимых значений параметра?

Ответ №1:

Вы хотите использовать click.Выбор

 @cli.command()
@click.argument('source')
@click.argument('destination')
@click.option('--mode', type=click.Choice(['local', 'ftp']), required = True)
def copy(source, destination, mode):
    print("copying files from "   source   " to "   destination   "using "   mode   " mode")