如何用Python仅读取大Excel文件(CSV/XLS/XLSB)的列名?
快速读取大Excel/CSV文件列名的最优方法
针对不同格式的大文件,直接用对应格式的原生库读取表头,完全无需加载整个文件,速度会比Pandas的方法快很多:
CSV格式
CSV是纯文本文件,表头就在第一行,用Python内置的csv模块直接读取第一行即可:
import csv file_path = "/Users/aj/testing/File_1.csv" with open(file_path, 'r', newline='', encoding='utf-8') as f: reader = csv.reader(f) cols = next(reader) # 直接取第一行作为列名
XLS/XLSX格式
针对XLSX(新版Excel)
用openpyxl的只读模式,只加载表头行:
from openpyxl import load_workbook file_path = "/Users/aj/testing/File_1.xlsx" wb = load_workbook(filename=file_path, read_only=True) ws = wb.active # 取默认工作表,也可以用wb['Sheet1']指定工作表名 cols = [cell.value for cell in ws[1]] # 第一行是表头 wb.close()
read_only=True模式下,openpyxl不会把整个工作簿加载到内存,只按需读取内容,取完第一行就可以停止。
针对XLS(旧版Excel)
用xlrd的按需加载模式:
import xlrd file_path = "/Users/aj/testing/File_1.xls" wb = xlrd.open_workbook(file_path, on_demand=True) ws = wb.sheet_by_index(0) # 按索引取工作表,也可用sheet_by_name('Sheet1') cols = ws.row_values(0) # 第一行索引为0 wb.close()
on_demand=True让xlrd只加载工作表的结构信息,不会读取全表数据。
XLSB格式
放弃Pandas的封装,直接用pyxlsb原生方法读取第一行:
from pyxlsb import open_workbook file_path = "/Users/aj/testing/File_1.xlsb" with open_workbook(file_path) as wb: # 工作表索引从1开始,也可以用get_sheet('SheetName')指定名称 with wb.get_sheet(1) as ws: cols = [] for row in ws.rows(): cols = [cell.value for cell in row] break # 只取第一行就退出循环,不读取后续内容
这种方式不会扫描整个工作表,精准只取表头行,解决了Pandas方法加载全表的问题。
内容的提问来源于stack exchange,提问作者arpit joshi
相关产品推荐
相关产品推荐

