【问题标题】:click custom option prompt function点击自定义选项提示功能
【发布时间】:2019-08-01 13:26:02
【问题描述】:

我注意到使用 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 循环。

【问题讨论】:

  • custom 期望完成的返回函数是什么?
  • 如果它包含尾随空格,它不应该接受用户输入
  • 所以你想要一个验证器?
  • 是的。我已经使用了一个 while 循环,但我正在寻找更好的方法

标签: python option prompt python-click


【解决方案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

【讨论】:

  • 它正在工作,我得到这个:错误:不允许空输入。但是如何删除“错误:”部分?我只想显示我的文字
  • Error: 是点击所固有的。您需要编写自己的提示函数,或在click.prompt 之外处理错误。
  • 如果我想在密码的情况下隐藏输入?
猜你喜欢
  • 2015-05-30
  • 2018-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多