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

Python CSV处理异常:Mac正常代码在Windows报IndexError: List Index out of range

解决Windows下CSV读取的IndexError问题

嘿,这个跨系统的CSV读取坑我之前踩过!Mac和Windows在文本文件处理上的细节差异确实容易导致这类问题,咱们来一步步解决:

核心原因分析

你遇到的IndexError: List Index out of range,本质是代码尝试访问row[0]但当前row是空列表。这大概率是因为:

  • Windows和Mac的换行符标准不同(Mac用\n,Windows用\r\n),导致csv模块解析时生成了空行
  • CSV文件末尾或中间存在空行,Windows下解析时这些空行被识别为无数据的行
  • 编码差异(比如Windows下CSV带BOM头,导致解析异常)

针对性解决方法

1. 让csv模块自动处理换行符

修改open函数时添加newline=''参数,这样csv模块会按照自身规则处理换行符,避免跨系统的换行符解析问题:

import csv

# 注意添加newline=''
with open('CFD.csv', 'rt', newline='') as f:
    reader = csv.reader(f, delimiter=',')
    for row in reader:
        if cfd_number == row[0]:
            cfd_checked_before = "Yes"

2. 跳过空行

即使处理了换行符,文件里可能还是存在真正的空行,所以在循环里先判断行是否为空,再访问索引:

import csv

with open('CFD.csv', 'rt', newline='') as f:
    reader = csv.reader(f, delimiter=',')
    for row in reader:
        # 跳过空行,避免访问row[0]时报错
        if not row:
            continue
        if cfd_number == row[0]:
            cfd_checked_before = "Yes"

3. 处理编码差异(可选但推荐)

Windows下保存的CSV可能带UTF-8 BOM头,或者用GBK编码,指定编码可以避免解析出异常行:

import csv

# 使用utf-8-sig处理BOM,兼容Windows和Mac的编码
with open('CFD.csv', 'rt', newline='', encoding='utf-8-sig') as f:
    reader = csv.reader(f, delimiter=',')
    for row in reader:
        if not row:
            continue
        if cfd_number == row[0]:
            cfd_checked_before = "Yes"

额外检查建议

如果上面的方法还没解决,你可以打开CSV文件确认:

  • 是否存在完全空的行(尤其是文件末尾)
  • 所有行的第一列是否都有数据
  • 分隔符确实是逗号(有时候Windows下Excel保存CSV会用分号,不过你Mac上正常的话这个概率低)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 15:27:35