新闻详情

新闻详情

首页 / 资讯中心 / 详情

Typer 怎么收集密码输入:hide_input 隐藏输入与 confirmation_prompt 二次确认

发布时间:2026/9/14 20:10:36来源:尧图网络
Typer 怎么收集密码输入:hide_input 隐藏输入与 confirmation_prompt 二次确认
Typer 怎么收集密码输入hide_input 隐藏输入与 confirmation_prompt 二次确认【免费下载链接】typerTyper, build great CLIs. Easy to code. Based on Python type hints.项目地址: https://gitcode.com/GitHub_Trending/ty/typer当一个 Typer CLI 程序需要在终端里向用户要一个敏感值比如密码同时希望用户输入两次以确认没有打错时官方教程给出的做法是在CLI Option上组合typer.Option的三个参数promptTrue缺值时在终端交互式提问、confirmation_promptTrue要求输入两次且一致、hide_inputTrue输入时屏幕不显示任何内容连****都不显示。本文按官方教程 docs/tutorial/options/password.md 的顺序从安装 Typer 到运行验证完成这条可执行路径。准备条件安装 Typer按 docs/tutorial/install.md 的说明先安装uv再创建项目并添加 Typer$ uv init awesome-project --bare $ cd awesome-project $ uv add typer其中--bare表示只创建最简pyproject.toml不生成示例文件uv add会创建项目虚拟环境.venv、把 Typer 写入pyproject.toml并生成uv.lock。后续命令都用uv run在项目环境里执行无需手动激活虚拟环境。第一步用 confirmation_prompt 要求输入两次先看 docs_src/options/password/tutorial001_an_py310.py 的写法用--email选项做二次确认文档中展示的正是这个 Annotated 版本from typing import Annotated import typer app typer.Typer() app.command() def main( name: str, email: Annotated[str, typer.Option(promptTrue, confirmation_promptTrue)], ): print(fHello {name}, your email is {email}) if __name__ __main__: app()参数含义对应文档描述promptTrue让程序在缺值时向用户提问而不是直接报错confirmation_promptTrue让用户输入两次值不一致会报错并重新提问见 docs/tutorial/options/prompt.md 的 Confirmation prompt 一节。运行uv run python main.py Camila文档示例输出如下// 程序先要 email再要确认 # Email: $ camilaexample.com # Repeat for confirmation: $ camilaexample.com Hello Camila, your email is camilaexample.com如果两次输入不一致文档示例的行为是给出错误Error: The two entered values do not match然后重新从头提示输入直到两次一致才继续执行。第二步叠加 hide_input 收集密码密码场景在此基础上只多一个参数hide_inputTrue完整代码见 docs_src/options/password/tutorial002_an_py310.pyfrom typing import Annotated import typer app typer.Typer() app.command() def main( name: str, password: Annotated[ str, typer.Option(promptTrue, confirmation_promptTrue, hide_inputTrue) ], ): print(fHello {name}. Doing something very secure with password.) print(f...just kidding, here it is, very insecure: {password}) if __name__ __main__: app()文档说明加hide_inputTrue后大多数 shell 下输入密码时屏幕不显示任何内容但程序仍能收到完整密码再配合confirmation_promptTrue就是双重确认的密码输入。运行uv run python main.py Camila文档示例输出如下假设两次输入的密码都是typerrocks// 提示输入密码但输入时屏幕什么都不显示 # Password: $ # Repeat for confirmation: $ Hello Camila. Doing something very secure with password. ...just kidding, here it is, very insecure: typerrocks这里的Password:/Repeat for confirmation:提示文本由 Typer 根据参数名自动生成程序最终通过函数参数拿到两次确认后的值。验证结果除手动运行外仓库为这两个示例提供了自动化测试可以直接作为核对标准tests/test_tutorial/test_options/test_password/test_tutorial002.py非交互传参runner.invoke(mod.app, [Camila, --password, secretpassword])断言退出码为 0 且输出包含传入的密码值——说明--password value可以直接代替交互输入交互输入runner.invoke(mod.app, [Camila], inputsecretpassword\nsecretpassword\n)断言输出中出现Password:和Repeat for confirmation:提示但不出现Password: secretpassword这样带输入内容的行——这正是hide_inputTrue生效的判断依据--help输出中显示--password str [required]。也就是说验证hide_input是否生效看提示行是否只打印标签、不打印用户输入的内容即可。替代路径与边界不用 Annotated 的等价写法docs_src/options/password/tutorial002_py310.py 展示了不带Annotated的版本参数直接写在默认值里password: str typer.Option(..., promptTrue, confirmation_promptTrue, hide_inputTrue)。两种写法行为一致测试同时覆盖两个模块。优先用带 prompt 的 CLI Option而不是typer.prompt()docs/tutorial/prompt.md 说明交互式提问通常应使用带promptTrue的CLI Option因为它仍允许非交互调用例如脚本里直接传--password只有在确实无法用CLI Option时才退而使用typer.prompt()/typer.confirm()。适用条件文档对隐藏输入的描述限定为in most shells即该行为依赖所在 shell 的输入回显能力。本文示例只是教学用途第二个示例打印密码是为了演示参数值确实被收到不代表安全的密码处理方式文档本身也标注 very insecure。完整的密码选项教程在 docs/tutorial/options/password.md二次确认的详细行为含输入不一致时的重试流程在 docs/tutorial/options/prompt.md 的 Confirmation prompt 一节可以继续对照。【免费下载链接】typerTyper, build great CLIs. Easy to code. Based on Python type hints.项目地址: https://gitcode.com/GitHub_Trending/ty/typer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Jetpack Compose性能优化与自定义布局实战指南 2026/9/14 22:53:04

Jetpack Compose性能优化与自定义布局实战指南

## 1. 项目概述最近在重构一个大型Compose项目时,我深刻体会到性能优化和自定义布局的重要性。当界面元素超过200个时,哪怕1ms的布局计算差异都会导致明显的卡顿。这份指南将分享我在处理复杂列表、嵌套滚动和自定义测量时的实战经验。Compose的声明式特…

阅读更多 →
FastAPI异步编程核心原理与高并发实战 2026/9/14 22:53:04

FastAPI异步编程核心原理与高并发实战

1. FastAPI异步编程的核心价值 在Web开发领域,异步编程已经成为处理高并发的标准范式。FastAPI作为现代Python Web框架,其异步支持建立在Python 3.7的async/await语法之上,通过非阻塞I/O操作实现高效的请求处理。与传统的同步框架相比&#x…

阅读更多 →
MMC混合FCS-MPC控制策略的Simulink实现与优化 2026/9/14 22:53:04

MMC混合FCS-MPC控制策略的Simulink实现与优化

1. 项目背景与核心价值模块化多电平换流器(MMC)作为高压直流输电领域的革命性拓扑结构,其核心优势在于模块化设计带来的高扩展性和低谐波特性。我在参与某800kV特高压工程时,曾亲眼见证传统PI控制在MMC启动瞬间产生的过电流问题—…

阅读更多 →
航空遥感影像数据管理系统:技术架构与优化实践 2026/9/14 22:53:04

航空遥感影像数据管理系统:技术架构与优化实践

1. 项目概述:航空遥感影像的数据管理革命去年参与某省自然资源调查项目时,我们团队处理了超过12TB的航拍影像数据。当需要调取三个月前某次飞行任务中特定区域的原始影像时,整整花费了两天时间在杂乱的文件夹中搜寻——这个痛苦的经历让我意识…

阅读更多 →
校园卡数据分析系统:Hadoop+Spark实战与优化 2026/9/14 22:53:04

校园卡数据分析系统:Hadoop+Spark实战与优化

1. 项目概述:校园卡数据背后的价值挖掘校园卡系统每天产生海量消费、门禁、图书借阅记录,这些数据看似普通却隐藏着行为模式、资源使用效率和校园安全等关键信息。我去年为某高校开发的这套分析系统,通过HadoopSpark技术栈处理日均20GB的流水…

阅读更多 →
Python进阶学习:从基础到项目实战的50天路径 2026/9/14 22:50:03

Python进阶学习:从基础到项目实战的50天路径

1. Python学习路径规划Python作为当前最流行的编程语言之一,其学习曲线相对平缓但内容丰富。Day50意味着已经完成了基础语法的学习阶段,正进入中高级应用领域。这个阶段的学习者通常已经掌握了变量、数据类型、控制结构等基础知识,需要开始构…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞