点击自定义选项提示功能

click custom option prompt function

我注意到使用点击的提示接受带有尾随空格的输入

ftp_server = click.prompt("FTP Server")

有没有办法使用像这样的自定义 return 函数来拒绝尾随空格?

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")

但我正在寻找更好的方法,因为我不想每次使用 prompt 时都使用 while 循环。

要拒绝无效的用户输入,您可以使用 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)

Trim 空格

您还可以考虑一个验证器,它会修剪前导和尾随空格但拒绝名称中的空格:

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