Python 四大文档读取方式:实战教程与场景适配指南

在 Python 数据处理、爬虫解析、自动化脚本等场景中,文档读取是高频基础操作。不同格式(TXT/CSV/Excel)、不同数据量(小文件 / 海量数据)需匹配对应的读取方式,才能兼顾效率与稳定性。本文详解 Python 四种核心文档读取方法(内置函数、csv 模块、pandas 库、openpyxl 库),附精简代码与场景对比,帮助开发者快速选择合适方案。

一、核心读取方式与实战实现

1. 内置函数(open ()):通用文本文件读取

open() 是 Python 内置的基础文件操作函数,支持 TXT、JSON 等文本格式,灵活度高,无需额外安装依赖,适合小体积文本文件。

核心代码(三种读取模式)

# 1. 逐行读取(推荐,内存占用低)

with open("data.txt", "r", encoding="utf-8") as f:

for line in f:

print(line.strip()) # strip() 去除换行符/空格

# 2. 读取全部内容(适合小文件)

with open("data.txt", "r", encoding="utf-8") as f:

content = f.read() # 一次性读取所有内容到字符串

print(content)

# 3. 按行读取到列表(便于后续处理)

with open("data.txt", "r", encoding="utf-8") as f:

lines = f.readlines() # 结果为列表,每个元素是一行内容

lines = [line.strip() for line in lines] # 数据清洗

关键说明
  • with 语句自动管理文件句柄,无需手动关闭,避免资源泄漏;
  • encoding="utf-8" 解决中文乱码问题,Windows 系统可能需改为 gbk;
  • 适用于 TXT、JSON、配置文件等文本格式,不支持二进制文件(如图片、Excel)。

2. csv 模块:CSV 文件专用读取

Python 标准库 csv 模块专为 CSV 格式设计,支持结构化数据解析,处理大文件时内存占用低,适合数据统计、报表分析场景。

核心代码(两种读取方式)

import csv

# 1. 普通读取(按行解析为列表)

with open("data.csv", "r", encoding="utf-8", newline="") as f:

reader = csv.reader(f)

header = next(reader) # 获取表头(第一行)

print("表头:", header)

for row in reader:

# row 为列表,按索引获取数据

print(f"姓名:{row[0]}, 年龄:{row[1]}")

# 2. 字典格式读取(更直观,按列名获取数据)

with open("data.csv", "r", encoding="utf-8", newline="") as f:

reader = csv.DictReader(f) # 表头作为字典键名

for row in reader:

print(f"姓名:{row['姓名']}, 城市:{row['城市']}")

优势与场景
  • 自动处理 CSV 格式的分隔符、引号转义,比 open() 手动分割更可靠;
  • 支持大文件逐行读取,不加载全量数据到内存;
  • 适用于 CSV 报表、数据导出文件、爬虫结果存储文件的解析。

3. pandas 库:高效数据读取(推荐大数据量)

pandas 是 Python 数据分析核心库,读取 CSV/Excel 速度极快,支持数据清洗、筛选、统计等一站式操作,适合中大型数据集(万条以上)。

核心代码(CSV/Excel 读取)

import pandas as pd

# 1. 读取 CSV 文件(最常用)

df = pd.read_csv("data.csv", encoding="utf-8")

# 查看数据基本信息(前 5 行、数据形状、列名)

print("前 5 行:\n", df.head())

print("数据形状(行×列):", df.shape)

print("列名:", df.columns.tolist())

# 2. 读取 Excel 文件(需安装 openpyxl 依赖)

# pip install pandas openpyxl

df_excel = pd.read_excel("data.xlsx", sheet_name="Sheet1")

# 数据筛选示例(查询年龄 > 30 的记录)

filtered_df = df_excel[df_excel["年龄"] > 30]

print("筛选后数据:\n", filtered_df)

关键优势
  • 一行代码完成读取,自动解析表头、数据类型;
  • 支持数据切片、筛选、分组统计等高级操作,无需手动处理;
  • 读取速度比 csv 模块快 5-10 倍,适合大数据量分析。

4. openpyxl 库:Excel 精细读取(支持格式 / 公式)

openpyxl 是专门处理 Excel 2007+(.xlsx/.xlsm)格式的库,支持读取单元格格式、公式、合并单元格等细节,适合需要精细操作 Excel 的场景。

核心代码(Excel 读取)

from openpyxl import load_workbook

# 加载工作簿(read_only=True 提升大文件读取速度)

wb = load_workbook("data.xlsx", read_only=True, data_only=True)

ws = wb["Sheet1"] # 选择工作表

# 1. 按行读取所有数据

for row in ws.iter_rows(min_row=1, values_only=True):

# values_only=True 只返回单元格值,不包含格式信息

print(row) # 输出示例:(('姓名', '年龄', '城市'), ('张三', 25, '北京'), ...)

# 2. 读取指定单元格数据

print("A1 单元格值:", ws["A1"].value)

print("第 2 行第 3 列值:", ws.cell(row=2, column=3).value)

wb.close() # 关闭工作簿,释放资源

适用场景
  • 需要读取 Excel 单元格格式、公式计算结果、合并单元格;
  • 处理包含复杂样式的 Excel 报表;
  • 大文件读取时启用 read_only=True,内存占用显著降低。

二、四种方式对比与场景适配

读取方式

优点

缺点

推荐场景

open () 函数

内置无需依赖、灵活度高、支持文本格式

需手动处理分隔符、不支持二进制文件

TXT/JSON 小文件、配置文件读取

csv 模块

标准库无依赖、内存占用低、解析可靠

不支持 Excel、缺乏高级数据处理功能

CSV 结构化数据、中少量数据解析

pandas 库

读取速度快、支持多格式、高级数据处理

需安装依赖、小文件场景略显冗余

大数据量分析、CSV/Excel 批量处理

openpyxl 库

精细操作 Excel、支持格式 / 公式、低内存

仅支持 Excel、代码略繁琐

Excel 复杂报表、单元格级操作

三、关键优化与避坑指南

1. 性能优化技巧

  • 大文件读取:优先选择 csv 模块(逐行读取)或 pandas(分块读取):

# pandas 分块读取大文件(每块 1000 行)

for chunk in pd.read_csv("large_data.csv", chunksize=1000):

process_chunk(chunk) # 逐块处理数据

  • Excel 大文件:使用 openpyxl 的 read_only=True 模式,或 pandas 的 usecols 指定列:

# 只读取 Excel 特定列,提升速度

df = pd.read_excel("large_excel.xlsx", usecols=["姓名", "年龄"])

2. 常见问题解决方案

问题现象

原因分析

解决方案

中文乱码

编码不匹配(如文件是 gbk 编码)

读取时指定 encoding="gbk" 或 encoding="utf-8-sig"

大文件内存溢出

一次性加载全量数据到内存

采用逐行读取(open ()/csv)或分块读取(pandas)

Excel 读取失败

格式不支持(如 .xls 老格式)

改用 xlrd 库(支持 .xls),或转换为 .xlsx

公式读取为字符串

openpyxl 未启用 data_only=True

加载工作簿时设置 data_only=True,读取公式计算结果

总结

Python 四种文档读取方式各有侧重:open() 函数适合基础文本文件,csv 模块专注 CSV 结构化数据,pandas 库是大数据量分析的首选,openpyxl 库擅长 Excel 精细操作。实际开发中,需根据文件格式、数据量大小、功能需求选择合适方案:小文本文件用 open(),CSV 数据用 csv 模块或 pandas,大数据量分析优先 pandas,Excel 复杂操作选 openpyxl。

掌握不同方式的核心用法与优化技巧,能大幅提升文档处理效率,避免内存溢出、乱码等常见问题。建议结合具体场景灵活组合使用,例如用 pandas 读取 CSV 后,通过 open() 保存为 TXT 格式,实现数据格式转换的全流程自动化。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐