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
相关产品推荐
相关产品推荐

