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

如何提升使用Python文件对象读取Excel文件的速度?

优化Excel文件读取速度的方案

1. 先换掉错误的读取方式

你现在的代码只是把Excel文件当成纯文本读,这完全解析不了Excel的结构,而且效率极低——Excel是二进制格式,这么读不仅拿不到有效数据,还白白浪费时间。必须用专门的Excel处理库,比如pandas、polars或者openpyxl,这些库针对Excel格式做了优化,读取速度会快很多。

2. 用并行处理批量文件

2800个文件单线程挨个读肯定慢,用多进程/多线程并行处理能直接把时间砍下来:

  • 用concurrent.futures的ProcessPoolExecutor就行,进程数设成CPU核心数的2倍左右,既能利用多核,又不会因为进程太多导致系统卡顿。
  • 示例代码:
import os
import pandas as pd
from concurrent.futures import ProcessPoolExecutor

def read_excel_file(file_path):
    # 根据文件后缀选引擎:.xlsx用openpyxl,.xls用xlrd
    try:
        return pd.read_excel(file_path, engine='openpyxl')
    except:
        return pd.read_excel(file_path, engine='xlrd')

if __name__ == "__main__":
    folder = os.path.join(os.getcwd(), "input")
    # 只处理Excel文件,过滤掉无关文件
    file_paths = [os.path.join(folder, f) for f in os.listdir(folder) 
                  if f.lower().endswith(('.xlsx', '.xls', '.xlsm'))]
    
    with ProcessPoolExecutor(max_workers=os.cpu_count()*2) as executor:
        # 并行读取所有文件
        results = list(executor.map(read_excel_file, file_paths))

3. 选更快的库

  • Polars:比pandas快不少的DataFrame库,读取Excel的速度提升明显,语法和pandas差不多,上手成本低:
    import polars as pl
    df = pl.read_excel("your_file.xlsx")
    
  • openpyxl(只读模式):如果只需要读特定工作表或部分单元格,直接用openpyxl的只读模式,不用加载整个文件,速度会更快:
    from openpyxl import load_workbook
    
    def read_target_data(file_path, sheet_name="Sheet1"):
        # 只读模式大幅降低内存占用和读取时间
        wb = load_workbook(file_path, read_only=True)
        ws = wb[sheet_name]
        # 只读取有值的行,values_only=True直接返回单元格值
        data = [row for row in ws.iter_rows(values_only=True)]
        wb.close()
        return data
    

4. 其他小技巧

  • 提前生成所有文件路径:不要在循环里反复拼接路径,一次性把所有Excel文件的路径列出来
  • 过滤无效文件:只处理.xlsx/.xls/.xlsm这类Excel后缀的文件,避免读错文件浪费时间
  • 分块读取大文件:如果有超大Excel,用pandas的chunksize参数分块读,避免内存溢出拖慢速度
  • 关闭不必要的功能:比如pandas读Excel时,不用的参数(比如header、index_col)别乱设,减少额外处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 23:05:22