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

如何为Python脚本传递多组公司名称及对应数值的命令行参数

实现方案

你提到的参数传递需求argparse完全可以支持,这里提供两种适配不同场景的实现方式:


方法1:完全匹配你期望的无标记成对传参

直接读取所有位置参数后自行按两两分组即可,调用格式和你要求的完全一致:

import argparse

def main():
    parser = argparse.ArgumentParser(description='批量处理公司关联数值')
    # 接收所有传入的位置参数
    parser.add_argument('params', nargs='+', help='成对传入的公司名称与对应数值,示例:"Company 1" 5 "Company 2" 9')
    args = parser.parse_args()

    # 校验参数数量是否为偶数
    if len(args.params) % 2 != 0:
        parser.error('参数必须成对传入,格式为:公司名 数值 公司名 数值 ...')

    # 组装为可用的业务结构
    company_data = {}
    for i in range(0, len(args.params), 2):
        company_name = args.params[i]
        try:
            related_value = int(args.params[i+1])
        except ValueError:
            parser.error(f'参数 {args.params[i+1]} 不是合法的数值类型')
        company_data[company_name] = related_value

    # 此处写入你的业务逻辑
    print(company_data)

if __name__ == '__main__':
    main()

调用示例:
python myscript.py "Company 1" 5 "Company 2" 9 "Company 3" 15


方法2:显式标记分组的健壮方案(推荐)

如果要避免用户误传参数顺序、漏传参数,建议用重复标记的方式实现,容错率更高:

import argparse

def main():
    parser = argparse.ArgumentParser(description='批量处理公司关联数值')
    # 允许重复调用--add参数,每组自动接收2个值
    parser.add_argument('--add', nargs=2, action='append', required=True,
                        metavar=('公司名', '数值'), help='添加一组公司与对应数值,可多次使用该参数')
    args = parser.parse_args()

    company_data = {}
    for company_name, value_str in args.add:
        try:
            related_value = int(value_str)
        except ValueError:
            parser.error(f'公司 {company_name} 对应的数值 {value_str} 不合法')
        company_data[company_name] = related_value

    # 此处写入你的业务逻辑
    print(company_data)

if __name__ == '__main__':
    main()

调用示例:
python myscript.py --add "Company 1" 5 --add "Company 2" 9 --add "Company 3" 15

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:09:01