python - Python Click 提示是否有任何预填充选项?
问题描述
我试图允许用户使用 Click 编辑配置文件中的参数。我想要做的是在提示输入中向他们提供预先填写的先前参数,以便他们可以直接编辑它,而不是让他们再次全部输入。例如,如果参数是“test.com”,我希望我的提示呈现如下内容:
Edit Domain Name: testdomain.com
testdomain.com 是可编辑的。然后,当他们添加 1 使其读取 testdomain1.com 时,提示会将 testdomain1.com 返回到代码。10 年前还有几篇其他帖子,其中包含 readline 和其他类似 vanilla-python 的选项,例如here和here,但我无法从 Click 文档中找出任何内容。
有人有想法么?谢谢!
解决方案
提示对于编辑文本不是最友好的。
幸运的是,有办法解决这个问题。
举个例子,git commit
。
如果您未指定--message
or-m
选项,则git commit
打开一个编辑器供用户输入提交消息。
您可能还需要考虑使用文本编辑器提示您的用户。
您可以通过以下方式实现此目的python-click
:
import click
def promp_user_with_editor(old_param: str) -> str:
comment = "# Edit Domain Name:\n"
editor_content = f"{comment}{old_param}"
result = click.edit(editor_content)
# In real code, you would properly handle the user's input here.
new_param = result.split(comment)[1].strip()
return new_param
@click.command()
def main():
new_param = promp_user_with_editor(old_param="testdomain.com")
click.echo(f"{new_param=}")
if __name__ == "__main__":
main()
现在将此代码运行为:
python3 the_name_of_the_above_file.py
会提示我:
# Edit Domain Name:
testdomain.com
如果我将其更改为:
# Edit Domain Name:
stackoverflow.com
输出是:
new_param='stackoverflow.com'
推荐阅读
- sharepoint - Sharepoint 2013 中 CDATA 标记的使用和删除
- drupal - 无法将图像保存到 drupal 8 中的样式文件夹
- amazon-web-services - 是否可以异步执行 AWS CDK 的部署?
- r - 当我尝试按 ID 计算区域重叠时,group_by 函数不起作用
- c# - Activator.CreateInstance() 在创建实例时抛出 System.MissingMethodException C#
- c# - 我可以对列表进行排序吗
通过它们里面的整数? - python - opencv:从文件夹读取和写入图像
- javascript - 应用程序找不到已安装的软件包
- python - tensorboard --logdir=runs not working:中止陷阱:6
- python - 当numpy挤压似乎没有挤压时如何挤压?