You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Typer库开发CLI工具时如何捕获选项的多个不定数量空格分隔值

实现Typer选项接收不定数量空格分隔值的方案

要实现--symbol选项支持传入多个空格分隔的币种值,只需要调整Typer参数的配置即可,具体实现如下:

核心配置说明

Typer的Option提供nargs参数,设置为-1时就代表该选项可以接收任意数量的后续空格分隔值,直到遇到下一个--开头的选项为止。配合List[str]类型即可接收所有传入的币种值。

完整代码示例

import typer
from typing import List, Optional

app = typer.Typer()

@app.command("fetchcommand")
def fetch_command(
    start: str = typer.Option(...),
    end: str = typer.Option(...),
    base: str = typer.Option("USD"),
    # 配置symbol参数支持不定数量空格分隔值
    symbol: Optional[List[str]] = typer.Option(None, nargs=-1)
):
    # 以下替换为你自己的汇率查询业务逻辑
    typer.echo(f"查询时间段:{start} ~ {end}")
    typer.echo(f"基准货币:{base}")
    if symbol:
        typer.echo(f"目标货币:{', '.join(symbol)}")
    else:
        typer.echo("未指定目标货币,返回全部支持币种汇率")

if __name__ == "__main__":
    app()

调用效果验证

调整后你可以直接用你需要的格式调用:

$./exchangerates fetchcommand --start 2021-09-01 --end 2021-09-02 --base USD --symbol EUR CAD
查询时间段:2021-09-01 ~ 2021-09-02
基准货币:USD
目标货币:EUR, CAD

可选调整项

  • 若要求用户必须至少传1个目标币种,把symbol参数的默认值None改为...即可,Typer会自动对空输入做参数校验报错。
  • 若希望遵循CLI通用规范,使用--symbol EUR --symbol CAD的重复选项传值,去掉nargs=-1参数,保留List[str]类型同时添加multiple=True配置即可,这种方式可以避免参数解析歧义,更适配复杂命令场景。

内容的提问来源于stack exchange,提问作者Harsha Madhwani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 21:30:05