щелкните пользовательскую опцию подсказки - PullRequest
1 голос
/ 11 марта 2019

Я заметил, что приглашение с использованием click принимает входные данные с конечными пробелами

ftp_server = click.prompt("FTP Server")

Есть ли способ использовать такую ​​функцию возврата, чтобы отклонять конечные пробелы?

def custom_prompt(value):
    if value.strip():
        return True
    else:
        return False

ftp_server = click.prompt("FTP Server", custom_prompt)

Я уже использовал это:

while not ftp_server.strip():
    ftp_server = click.prompt("FTP Server")

Но я ищу лучший способ, потому что я не хочу использовать цикл while каждый раз, когда использую подсказку.

1 Ответ

1 голос
/ 11 марта 2019

Чтобы отклонить недопустимый пользовательский ввод, вы можете использовать параметр value_proc для click.prompt.Валидатор для отклонения ввода с конечными пробелами может выглядеть следующим образом:

Валидатор подсказок

import click

def validate_no_trailing_space(value):
    if value != value.rstrip():
        raise click.UsageError("Trailing space is invalid!")
    return value

ftp_server = click.prompt("FTP Server",
                          value_proc=validate_no_trailing_space)

Обрезать пробелы

Вы также можете рассмотреть валидатор, который обрезает начальные и конечные пробелы, ноотклонить пробелы в имени:

def validate_no_internal_space(value):
    value = value.strip()
    if ' ' in value:
        raise click.UsageError("Spaces are not valid here!")
    return value
...