Python Typer参数依赖校验的可行性及实现方案问询
Python Typer实现条件必填参数方案
1. 需求是否可通过Typer实现?
可以实现,Typer支持通过参数验证逻辑处理这种条件性必填的参数规则。
2. 实现建议
通过在命令函数内部添加条件判断,结合Typer的异常处理机制,就能实现需求中的参数校验逻辑。以下是具体实现代码:
import typer app = typer.Typer() @app.command() def main( device: str = typer.Option( ..., "--device", "-d", choices=["apples", "oranges", "banana"], help="指定设备类型" ), soc: str = typer.Option( None, "--soc", "-s", choices=["green", "red"], help="指定SOC类型" ) ): # 条件校验:当device为apples时,soc必须存在 if device == "apples" and soc is None: raise typer.BadParameter("-s为必填项", param_hint="-s/--soc") # 这里编写你的业务逻辑(回调函数) typer.echo(f"执行逻辑:设备={device}, SOC={soc}") if __name__ == "__main__": app()
代码关键点说明:
device参数用...标记为必填,通过choices限制可选值为apples/oranges/bananasoc参数默认值设为None(非必填),同样通过choices限制可选值为green/red- 使用
typer.BadParameter抛出参数错误,Typer会自动格式化错误提示并退出程序,符合CLI的错误输出规范
测试验证:
- 执行
python main.py -d oranges:参数合法,正常执行业务逻辑 - 执行
python main.py -d apples:触发错误提示,输出:Usage: main.py [OPTIONS] Try 'main.py --help' for help. Error: Invalid value for '-s/--soc': -s为必填项 - 执行
python main.py -d apples -s red:参数合法,正常执行业务逻辑
内容的提问来源于stack exchange,提问作者Devjeet Mandal
相关产品推荐
相关产品推荐

