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

Colab中使用pandas导入Excel工作簿是否存在文件路径长度上限

Pandas导入Excel路径长度限制及批量导入解决方案

路径长度限制说明

Pandas本身未对文件路径长度设置自定义限制,你遇到的路径长度相关限制来自Colab底层的运行环境:

  • Colab基于Debian Linux系统运行,Linux系统默认的完整路径(含所有父级文件夹、文件名)总字符上限为4096,单个文件名的字符上限为255
  • 若路径总长度超出上述上限,操作系统会直接返回文件不存在错误,该错误会透传给Pandas,触发FileNotFoundError
  • 除长度外,路径中的非ASCII字符、特殊转义符也可能触发路径解析失败,出现同类报错

报错排查&解决方法

  • 优先通过代码验证路径有效性,不要仅依赖肉眼判断路径正确,执行代码:print(os.path.exists(你的完整文件路径)),若返回False则说明路径在系统层面未被识别
  • 短路径规避方案:先切换工作目录到Excel文件所在的上层文件夹,使用相对路径读取,示例代码:
import os
import pandas as pd

# 替换为Excel文件所在的上层文件夹路径
os.chdir("/path/to/your/excel/storage/folder")
# 直接用文件名读取
df = pd.read_excel("target_file.xls")
  • 长路径兼容方案:通过系统调用直接打开文件句柄传给Pandas,绕过路径解析长度限制,示例代码:
import pandas as pd
import os

file_path = "/your/very/long/full/path/to/target_file.xls"
with os.fdopen(os.open(file_path, os.O_RDONLY), 'rb') as f:
    df = pd.read_excel(f)

批量导入合并实现方案

你可以基于上述长路径兼容方案,遍历所有xls文件后合并,完整示例代码:

import pandas as pd
import os
from glob import glob

# 替换为存放所有xls文件的文件夹路径
excel_root = "/your/long/path/to/excel/folder"
# 匹配文件夹下所有xls格式文件
file_list = glob(f"{excel_root}/*.xls")

df_buffer = []
for file_path in file_list:
    # 兼容长路径读取
    with os.fdopen(os.open(file_path, os.O_RDONLY), 'rb') as f:
        tmp_df = pd.read_excel(f)
        df_buffer.append(tmp_df)

# 合并所有数据表,ignore_index=True重置合并后的行索引
total_df = pd.concat(df_buffer, ignore_index=True)

注意事项

  • 读取.xls格式文件需要依赖1.2.0及以下版本的xlrd库,若Colab环境缺失依赖,执行命令安装:!pip install xlrd==1.2.0
  • 若不同文件的列结构不一致,可在concat时添加join="inner"参数,仅保留所有文件共有的列,避免合并报错
  • 若路径中包含中文、空格等特殊字符,可在路径字符串前加r前缀声明为raw字符串,避免转义解析错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 14:54:02