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

Python如何将CSV文件列值作为函数参数遍历调用函数

实现方案

你当前使用的csv.DictReader本身已经是支持逐行迭代的对象,不需要额外将整个Reader对象转换为字典存储,你原代码里list_of_csv = dict(csv_reader)的写法是错误的:该写法会把每行第一列的值作为键、整行内容作为值生成嵌套字典,完全不符合逐行取参数的需求。

你使用的CSV为分号分隔格式,内容如下:

name;subnet
name_a;192.168.111.0/24
name_b;192.168.168.0/24
name_c;192.168.29.0/24

正确实现代码

直接遍历DictReader输出的行对象即可,逐行取出对应列的值传入函数,这种写法内存效率最高,大文件场景下也不会占用过多内存:

import csv

# 示例自定义函数,替换成你自己的业务逻辑即可
def handle_address(name: str, subnet: str):
    # 比如你的逻辑:创建防火墙地址对象、做网段校验等
    print(f"处理条目 名称:{name} 网段:{subnet}")

csv_file_path = "你的csv文件实际路径.csv"
with open(csv_file_path, mode='r', encoding='utf-8-sig') as f:
    reader = csv.DictReader(f, delimiter=';')
    # 直接逐行遍历
    for row in reader:
        # 按表头名取对应列的值,作为参数传入函数
        handle_address(name=row["name"], subnet=row["subnet"])

可选场景说明

  • 如果你需要在文件关闭后反复使用CSV内的所有数据,可以在读取时把所有行转成列表存储:csv_rows = list(reader),后续遍历csv_rows的逻辑和上面完全一致,列表里的每个元素都是对应行的字典。
  • 不建议将Reader直接转为dict类型,该结构不适合逐行传参的场景。
  • 用DictReader按表头取值的方式兼容性更好,后续如果CSV调整列的顺序,只要表头字段名不变,代码不需要修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 03:06:37