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

Python新手求助:运行CSV处理代码报IndexError索引越界错误

错误原因与修复方案

错误解释

你遇到的 IndexError: list index out of range 是因为这行代码:

csv_file_name = csv_file.split('\\')[7]

执行 split('\\') 后得到的列表元素数量不足8个(索引从0开始,第7个是第8个元素),导致找不到对应索引的内容。

问题出在两个核心点:

  • 硬编码索引[7]:不同文件的路径层级可能不一样,有的路径分割后元素数量少于8个,固定写索引7必然出错。
  • 路径分隔符局限性:\\ 是Windows系统的路径分隔符,如果是Linux/macOS系统,路径分隔符是/,用\\分割会把整个路径当成一个元素,同样会触发索引越界。

修复方法

不要手动分割路径拿文件名,用Python内置的路径处理模块,兼容性更强且不会出错:

方法1:使用os.path模块

import os

# 替换原代码中csv_file_name的赋值行
csv_file_name = os.path.basename(csv_file)

方法2:使用pathlib(Python3.4+推荐写法)

from pathlib import Path

# 替换原代码中csv_file_name的赋值行
csv_file_name = Path(csv_file).name

这两种方法不管是Windows还是Linux/macOS系统,不管路径有多少层级,都能准确提取文件名。


原代码与报错信息

原运行代码

final_df = pd.DataFrame() #empty dataframe

for csv_file in file_list:
    df = pd.read_csv(csv_file)
    csv_file_name = csv_file.split('\\')[7]
    print('Processing File : {}'.format(csv_file_name))
    df.columns = df.columns.str.replace(' ', '')
    df['TIMESTAMP'] = pd.to_datetime(df['TIMESTAMP'])
    df.set_index(['TIMESTAMP'], inplace=True)

    if 'Unnamed:13' in df.columns:
        df.drop(['Unnamed:13'], axis=1, inplace=True)

    df_trim = df.apply(lambda x: x.str.strip() if x.dtype == 'object' else x)

    new_df = df_trim[df_trim['SERIES'].isin(['EQ', 'BE', 'SM'])]
    final_df = final_df.append(new_df)

final_df.sort_index(inplace=True) #to sort by dates

报错信息

IndexError                                Traceback (most recent call last)
Cell In[17], line 5
      3 for csv_file in file_list:
      4     df = pd.read_csv(csv_file)
----> 5     csv_file_name = csv_file.split('\\')[7]
      6     print('Processing File : {}'.format(csv_file_name))
      7     df.columns = df.columns.str.replace(' ', '')

IndexError: list index out of range

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 00:57:28