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'