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

如何多次进入enumerate()循环实现CSV文件分批读取?

用enumerate()分批读取大型CSV的解决方案

刚好碰到过类似的场景,我来给你捋捋怎么用enumerate()搞定分批读大CSV的问题~你之前的脚本只读到前100行,大概率是因为处理完第一批后就终止了迭代,没继续遍历文件剩余内容。其实靠着enumerate()自带的索引,完全能实现每100行一批的循环处理。

直接可用的实现代码

先给你上核心代码,注释里写清楚了逻辑:

pathInput = "input.csv"
batch_size = 100

# 用with语句自动管理文件,省得手动关文件
with open(pathInput, 'r') as f:
    current_batch = []
    # enumerate从1开始计数,方便算批次号
    for line_num, line in enumerate(f, start=1):
        # 把当前行加入批次列表,strip()可以去掉换行符,按需调整
        current_batch.append(line.strip())
        
        # 每攒够100行就处理一次
        if line_num % batch_size == 0:
            print(f"正在处理第 {line_num//batch_size} 批次,共 {len(current_batch)} 行")
            # 这里替换成你的业务逻辑,比如写入数据库、分析数据
            # process_my_data(current_batch)
            current_batch = []  # 清空列表,准备下一批
    
    # 别忘了处理最后一批不足100行的内容!
    if current_batch:
        print(f"处理最后一批剩余的 {len(current_batch)} 行")
        # process_my_data(current_batch)

关键逻辑说明

  • 文件对象本身是可迭代的,enumerate(f)会一直遍历到文件末尾,不会中途停下,只要你没手动终止循环。
  • 用line_num % batch_size == 0判断是否凑够了一批,这样每到第100、200...行就触发批次处理。
  • 最后一定要检查current_batch是否为空,不然文件末尾不足100行的内容会被漏掉。

如果需要规范解析CSV(带表头/字段处理)

要是你的CSV有表头,或者需要把每行解析成结构化数据,结合csv模块会更靠谱:

import csv

pathInput = "input.csv"
batch_size = 100

with open(pathInput, 'r') as f:
    csv_reader = csv.reader(f)
    # 先读表头(如果你的CSV有表头的话,没有就删掉这行)
    header = next(csv_reader)
    current_batch = []
    
    for line_num, row in enumerate(csv_reader, start=1):
        current_batch.append(row)
        
        if line_num % batch_size == 0:
            print(f"处理第 {line_num//batch_size} 批次,表头: {header}")
            # 这里可以传入表头和批次数据处理
            # process_csv_batch(header, current_batch)
            current_batch = []
    
    if current_batch:
        print(f"处理最后一批剩余的 {len(current_batch)} 行")
        # process_csv_batch(header, current_batch)

这样改完之后,就能完整遍历整个大CSV,用enumerate()实现分批处理,再也不会只停在前100行啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:41:11