#python #option #prompt #python-click
#python #запрос #python-click
Вопрос:
Я заметил, что запрос с использованием 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. Что должна выполнять пользовательская функция возврата?
2. он не должен принимать пользовательский ввод, если он содержит конечные пробелы
3. Итак, вам нужен валидатор?
4. ДА. Я уже использовал цикл while, но я ищу способ получше
Ответ №1:
Чтобы отклонить неверный пользовательский ввод, вы можете использовать value_proc
параметр to 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
Комментарии:
1. Это работает, и я получаю это: Ошибка: пустые входные данные не разрешены. Но как я могу удалить часть «Ошибка:»? Я хочу, чтобы отображался только мой текст
2.
Error:
Присущ щелчок. Вам нужно будет написать свою собственную функцию приглашения или обработать ошибку за пределамиclick.prompt
.3. А если я хочу скрыть ввод в случае ввода пароля?