Python 四大文档读取方式:实战教程与场景适配指南
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 格式,实现数据格式转换的全流程自动化。
更多推荐
所有评论(0)