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