CLI 选项提示
除了只显示错误之外,还可以使用 prompt=True
询问缺少的值
import typer
from typing_extensions import Annotated
def main(name: str, lastname: Annotated[str, typer.Option(prompt=True)]):
print(f"Hello {name} {lastname}")
if __name__ == "__main__":
typer.run(main)
提示
如果可能,最好使用 Annotated
版本。
import typer
def main(name: str, lastname: str = typer.Option(..., prompt=True)):
print(f"Hello {name} {lastname}")
if __name__ == "__main__":
typer.run(main)
然后,你的程序将在终端中向用户询问它
// Call it with the NAME CLI argument
$ python main.py Camila
// It asks for the missing CLI option --lastname
# Lastname: $ Gutiérrez
Hello Camila Gutiérrez
自定义提示¶
你还可以设置自定义提示,传递要使用的字符串,而不仅仅是 True
import typer
from typing_extensions import Annotated
def main(
name: str,
lastname: Annotated[str, typer.Option(prompt="Please tell me your last name")],
):
print(f"Hello {name} {lastname}")
if __name__ == "__main__":
typer.run(main)
提示
如果可能,最好使用 Annotated
版本。
import typer
def main(
name: str, lastname: str = typer.Option(..., prompt="Please tell me your last name")
):
print(f"Hello {name} {lastname}")
if __name__ == "__main__":
typer.run(main)
然后,你的程序将使用你的自定义提示进行询问
// Call it with the NAME CLI argument
$ python main.py Camila
// It uses the custom prompt
# Please tell me your last name: $ Gutiérrez
Hello Camila Gutiérrez
确认提示¶
在某些情况下,您可能需要提示输入一些内容,然后要求用户通过两次输入来确认。
您可以通过传递参数 confirmation_prompt=True
来做到这一点。
假设这是一个用于删除项目的 CLI 应用程序
import typer
from typing_extensions import Annotated
def main(
project_name: Annotated[str, typer.Option(prompt=True, confirmation_prompt=True)],
):
print(f"Deleting project {project_name}")
if __name__ == "__main__":
typer.run(main)
提示
如果可能,最好使用 Annotated
版本。
import typer
def main(project_name: str = typer.Option(..., prompt=True, confirmation_prompt=True)):
print(f"Deleting project {project_name}")
if __name__ == "__main__":
typer.run(main)
它将提示用户输入一个值,然后进行确认
$ python main.py
// Your app will first prompt for the project name, and then for the confirmation
# Project name: $ Old Project
# Repeat for confirmation: $ Old Project
Deleting project Old Project
// If the user doesn't type the same, receives an error and a new prompt
$ python main.py
# Project name: $ Old Project
# Repeat for confirmation: $ New Spice
Error: The two entered values do not match
# Project name: $ Old Project
# Repeat for confirmation: $ Old Project
Deleting project Old Project
// Now it works 🎉