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

发布时间:2026/9/14 20:10:26

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),仅供参考
延伸阅读

更多相关文章

2026/9/14 20:05:23

DarkHole1:基于Web Components的暗色主题组件库开发实践

1. 项目背景与目标DarkHole1这个项目名称让我联想到一个与HTML相关的网页开发工具或框架。从名称中的"Dark"可以推测这可能是一个暗色主题的网页组件库,而"Hole"则暗示着某种容器或入口功能。结合MDN Web Docs提供的HTML技术文档,我…

2026/9/14 20:05:23

Workbuddy定时任务实现库存看板自动刷新

1. 项目概述:为什么一个库存看板值得动用定时任务重做?“用workbuddy定时任务替代人工搬数据:我把库存看板做成自动刷新”——这个标题里藏着三个关键信号:第一,当前存在“人工搬数据”的低效痛点;第二&…

2026/9/14 20:20:27

Antigravity+Claude Code+Codex:移动端多智能体编码

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/14 20:20:27

OLAP可视化实战:从选图设计到性能优化的完整指南

1. 项目理解与应用场景定位1.1 这个题目到底想解决什么问题OLAP,全称是Online Analytical Processing,联机分析处理。这几年大数据领域里提到它,基本就是指ClickHouse、Doris、StarRocks、Kylin、Hive、Spark SQL这批分析引擎,以及…

2026/9/14 20:20:27

企业级ETL监控告警体系设计与实践

1. ETL任务监控告警的必要性在企业数据仓库和数据分析项目中,ETL(Extract-Transform-Load)流程是数据流转的核心环节。根据行业统计,超过70%的数据质量问题都源于ETL过程中的异常。我曾参与过一个金融风控项目,凌晨3点…

2026/9/14 20:15:26

企业级AI Agent平台落地指南:架构、编排与治理实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/14 2:17:50

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/14 0:03:22

KCF目标跟踪算法与OTB工程实现:毕业设计实战解析

简介:这是一份基于KCF核相关滤波算法、融合尺度池与抗遮挡处理的目标检测跟踪MATLAB完整源码,主要面向计算机相关专业准备毕业设计、课程设计或期末大作业的学生,也适合需要项目实战练习的初学者。源码在OTB数据集上完成验证,能够…

2026/9/14 0:03:22

语音情感识别实战:Keras实现LSTM、CNN、SVM与MLP多模型对比

简介:面向语音情感识别入门与进阶开发者,这份基于Keras的项目源码完整实现了LSTM、CNN、SVM、MLP四种模型,兼容Python3.8与Keras/TensorFlow2环境。压缩包内含49个文件,大小约70.31MB,主体包括Python脚本、yaml/json配…

2026/9/14 11:59:31

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/14 13:53:59

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/14 11:22:57

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码