python - 点击自定义选项提示功能

标签 python 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 循环。

最佳答案

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

关于python - 点击自定义选项提示功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55098344/

相关文章:

python - 在 python 中,如何反转 2D 字典?

Python 搜索列

python - Pandas 数据帧 : How to calculate the difference by first row and last row in group?

git - zsh 字符串的长度,可能包含 unicode 和转义字符

python - 禁止在python点击中传递几个特性开关

python - 根据内部列表的第 N 个元素的总和对列表的列表的列表进行排序

Javascript Prompt() 在 Android 浏览器中出现暗淡(微弱)的提示消息

javascript - 删除值提示中字符串之间的空格

python - 如何在评估 Click cli 函数后继续执行 Python 脚本?

python - 使用 Python Click 保留用户提供的参数的顺序