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

Python argparse如何为单个flag配置可选数量的入参

Python argparse 实现--bin参数接收1~2个入参的修改方案

问题原因

你当前配置的nargs=2强制要求--bin必须传递2个参数,所以仅传1个文件路径时会触发参数数量不匹配的报错。

修改步骤

  1. 调整参数定义,将nargs改为'+'表示接收1个及以上的入参,同时补充参数说明:
# 提前定义address的默认值,可根据需求修改
DEFAULT_BIN_ADDR = "0x08000000"

cmdParser.add_argument(
    '--bin',
    action='store',
    nargs='+',
    required=True,
    metavar=('file', 'address'),
    help=f'固件bin文件路径,可选烧录地址,默认值为{DEFAULT_BIN_ADDR}'
)
  1. 参数解析后自行处理长度逻辑,同时可增加参数数量校验避免传入过多参数:
args = cmdParser.parse_args()

# 校验参数数量不超过2
if len(args.bin) > 2:
    cmdParser.error('--bin 最多仅支持传入2个参数:[bin文件路径] [可选烧录地址]')

bin_path = args.bin[0]
burn_addr = args.bin[1] if len(args.bin) == 2 else DEFAULT_BIN_ADDR

修改后即可支持两种调用形式:

  • 仅传文件:dfuMaker.py --bin firmware.bin,自动使用默认地址
  • 传文件+地址:dfuMaker.py --bin firmware.bin 0x08010000,使用传入的地址

内容的提问来源于stack exchange,提问作者Noam Yulzari

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:30:01