如何通过自定义分隔符从typer.Option获取无限多选项
用Python和Typer实现自定义分隔符分割Option多值需求
完全可以实现,核心是利用Typer的Option支持自定义解析函数的特性,将命令行传入的字符串按指定分隔符处理成列表。
实现代码
import typer def parse_custom_values(value: str) -> list[str]: # 按逗号分割输入字符串,同时去除每个元素前后的引号与空格 return [item.strip(' "') for item in value.split(',')] app = typer.Typer() @app.command() def add( custom_values: list[str] = typer.Option( ..., "-C", parser=parse_custom_values, help="使用逗号分隔的自定义值,含空格的内容需用引号包裹整体参数" ) ): print(custom_values) if __name__ == "__main__": app()
测试验证
执行命令:
$ python main.py add -C "first one","second one","third"
输出结果:
['first one', 'second one', 'third']
关键说明
- Typer的
typer.Option通过parser参数接收自定义解析函数,该函数负责将命令行传入的字符串转换为目标类型(这里是字符串列表) - 解析函数中用
split(',')按逗号分割输入,再通过strip(' "')清理每个元素前后的引号和多余空格,确保带空格的内容能正确提取 - 命令行必须将整个
-C参数用引号包裹,避免Shell把逗号或空格识别为参数分隔符
内容的提问来源于stack exchange,提问作者Alirezaarabi
相关产品推荐
相关产品推荐

