Python 点击提示是否有任何预填充选项?
Does Python Click prompt have any prefill options?
我正在尝试允许用户使用 Click 从配置文件编辑参数。我想做的是在提示输入中为他们提供预先填充的先前参数,以便他们可以直接编辑它,而不是让他们重新输入所有内容。
例如,如果参数是 'test.com',我希望我的提示显示这样的内容:
Edit Domain Name: testdomain.com
testdomain.com 可编辑。然后,当他们添加 1 时,它会读取 testdomain1.com,提示 returns testdomain1.com 返回代码。
10 年前还有其他一些帖子,其中包含 readline 和其他更普通的-python-like 选项,如 here and here,但我无法从 Click 文档中找出任何内容。
有人有什么想法吗?谢谢!
提示对于编辑文本来说不是最友好的。
幸运的是,有办法解决这个问题。
例如,git commit
。
如果您没有指定 --message
或 -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:
whosebug.com
输出为:
new_param='whosebug.com'
我正在尝试允许用户使用 Click 从配置文件编辑参数。我想做的是在提示输入中为他们提供预先填充的先前参数,以便他们可以直接编辑它,而不是让他们重新输入所有内容。 例如,如果参数是 'test.com',我希望我的提示显示这样的内容:
Edit Domain Name: testdomain.com
testdomain.com 可编辑。然后,当他们添加 1 时,它会读取 testdomain1.com,提示 returns testdomain1.com 返回代码。 10 年前还有其他一些帖子,其中包含 readline 和其他更普通的-python-like 选项,如 here and here,但我无法从 Click 文档中找出任何内容。
有人有什么想法吗?谢谢!
提示对于编辑文本来说不是最友好的。
幸运的是,有办法解决这个问题。
例如,git commit
。
如果您没有指定 --message
或 -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:
whosebug.com
输出为:
new_param='whosebug.com'