点击自定义选项提示功能

时间:2019-03-11 09:03:48

标签: python option prompt 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 个答案:

答案 0 :(得分:1)

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