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

如何使用Python的argparse库支持同一个参数多次重复传入

实现argparse同一参数多次指定的方法

该需求完全可以实现,核心是用到add_argument方法的action='append'配置项,该配置会把每次指定参数传入的值追加到列表中,不会出现后续值覆盖前面值的问题。

基础实现:单次-i后跟单个值,支持多次指定-i

如果你只需要支持$ myscript -i host1 -i host2的传参形式,也就是每次-i后面仅跟1个host值,配置写法如下:

import argparse

parser = argparse.ArgumentParser()
# action='append' 表示每次遇到-i参数,就把对应值追加到列表中
parser.add_argument('-i', action='append', required=True, help='指定目标主机,可多次指定')

args = parser.parse_args()
print(args.i) # 执行示例命令后输出 ['host1', 'host2']

进阶实现:同时兼容两种传参形式

如果你需要同时支持「单次-i后跟多个值」和「多次指定-i」两种传参方式,也就是同时兼容$ myscript -i host1 host2和$ myscript -i host1 -i host2,可以把nargs和action='append'搭配使用:

import argparse

parser = argparse.ArgumentParser()
# nargs='+' 表示每次-i后面可接1个或多个值,action='append'把每次的结果追加到列表
parser.add_argument('-i', nargs='+', action='append', required=True, help='指定目标主机,可多次指定,单次也可传入多个主机')

args = parser.parse_args()
# 此时得到的args.i是嵌套列表,比如传入-i host1 -i host2 host3 会得到 [['host1'], ['host2', 'host3']]
# 可以用列表推导式展平得到所有主机的一维列表
host_list = [host for group in args.i for host in group]
print(host_list) # 执行上述示例命令后输出 ['host1', 'host2', 'host3']

如果需要允许-i后不跟任何值,可以把nargs='+'替换为nargs='*'。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:15:04