第13章: 文件格式、办公文档与自动化常用包详解
🎯 本章目标
- 了解用于 CSV、Excel、Word、PDF、图像、邮件处理的常用 Python 包
- 掌握每个包的功能、常用方法、参数说明与 Web 系统应用场景
🟢 一、CSV 文件处理(csv 模块)
功能简介
- 读写
.csv 文件(表格型文本文件)
- 内置模块,无需额外安装
- 与 Excel 兼容
常用函数与类
| 函数 / 类 |
功能 |
csv.reader(file) |
读取 CSV 文件为列表 |
csv.writer(file) |
写入 CSV 文件 |
csv.DictReader(file) |
按列名读取为字典 |
csv.DictWriter(file, fieldnames) |
按列名写入数据 |
常用参数
| 参数 |
说明 |
delimiter |
分隔符,默认, |
newline |
防止写入空行 |
encoding |
文件编码 |
示例
import csv
with open("users.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=["id", "name", "email"])
writer.writeheader()
writer.writerow({"id": 1, "name": "Tom", "email": "tom@mail.com"})
with open("users.csv", "r", encoding="utf-8") as f:
reader = csv.DictReader(f)
for row in reader:
print(row["name"], row["email"])
✅ Web 应用场景:批量导入用户、导出订单报表。
🟣 二、Excel 文件处理(openpyxl 与 pandas)
openpyxl
功能
- 读写
.xlsx 文件(Excel 2007+)
- 可创建、修改、格式化单元格
常用类与方法
| 类 / 方法 |
功能 |
Workbook() |
创建新工作簿 |
load_workbook() |
读取已有文件 |
wb.active |
获取当前表 |
ws.append(list) |
追加行数据 |
ws.cell(row, column, value) |
按行列访问单元格 |
wb.save() |
保存文件 |
示例
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws.title = "Scores"
ws.append(["姓名", "分数"])
ws.append(["Tom", 90])
wb.save("scores.xlsx")
样式设置
from openpyxl.styles import Font, PatternFill
ws["A1"].font = Font(bold=True, color="FFFFFF")
ws["A1"].fill = PatternFill(start_color="000000", end_color="000000", fill_type="solid")
✅ Web 应用:生成 Excel 报表、财务导出。
pandas
功能
- 高级表格数据分析与导入导出
- 支持 CSV、Excel、JSON、SQL 等格式
常用方法
| 方法 |
功能 |
pd.read_csv() |
读取 CSV |
pd.read_excel() |
读取 Excel |
df.to_csv() |
导出 CSV |
df.to_excel() |
导出 Excel |
df.describe() |
获取统计信息 |
示例
import pandas as pd
df = pd.read_excel("scores.xlsx")
df["平均分"] = df["分数"].mean()
df.to_excel("summary.xlsx", index=False)
✅ Web 应用:后台管理系统导入导出、数据统计。
🟡 三、Word 文档处理(python-docx)
功能简介
- 创建和编辑
.docx 文件
- 支持段落、表格、图片等元素
常用类与方法
| 方法 |
功能 |
Document() |
创建文档对象 |
doc.add_paragraph() |
添加段落 |
doc.add_heading() |
添加标题 |
doc.add_table(rows, cols) |
添加表格 |
doc.add_picture(path, width) |
添加图片 |
doc.save() |
保存文件 |
示例
from docx import Document
doc = Document()
doc.add_heading("项目周报", 0)
doc.add_paragraph("完成模块:用户登录、数据导出")
doc.save("weekly_report.docx")
✅ Web 应用:自动生成合同、报告、模板。
🔵 四、PDF 文件处理(reportlab 与 pdfplumber)
reportlab
功能
常用方法
| 方法 |
功能 |
canvas.Canvas(file) |
创建 PDF 文件对象 |
drawString(x, y, text) |
写入文字 |
drawImage() |
插入图片 |
save() |
保存 |
示例
from reportlab.pdfgen import canvas
c = canvas.Canvas("output.pdf")
c.drawString(100, 750, "销售报告")
c.save()
✅ Web 应用:自动生成发票、分析报告。
pdfplumber
功能
常用方法
| 方法 |
功能 |
pdfplumber.open(file) |
打开 PDF |
page.extract_text() |
提取文本 |
page.extract_tables() |
提取表格 |
示例
import pdfplumber
with pdfplumber.open("output.pdf") as pdf:
text = pdf.pages[0].extract_text()
print(text)
✅ Web 应用:解析上传的合同、简历内容。
🟠 五、图像处理(Pillow)
功能简介
- 图像读写、裁剪、压缩、添加水印等
- 常用于图片上传与展示
常用方法
| 方法 |
功能 |
Image.open(path) |
打开图片 |
img.resize(size) |
调整大小 |
img.crop(box) |
裁剪 |
img.convert(mode) |
转换模式 |
img.save(path) |
保存 |
ImageDraw.Draw() |
绘图对象 |
示例
from PIL import Image, ImageDraw
img = Image.open("avatar.jpg").resize((200, 200))
draw = ImageDraw.Draw(img)
draw.text((10, 10), "Demo", fill="red")
img.save("result.jpg")
✅ Web 应用:头像处理、缩略图、水印。
🔴 六、邮件发送(smtplib + email.mime)
功能
- 通过 SMTP 协议发送邮件
- 支持 HTML、附件、多收件人
常用类
| 类 |
功能 |
SMTP() |
创建 SMTP 客户端 |
MIMEText() |
创建文本邮件 |
MIMEMultipart() |
多部分邮件 |
send_message() |
发送邮件 |
示例
import smtplib
from email.mime.text import MIMEText
msg = MIMEText("系统通知:任务完成", "plain", "utf-8")
msg["From"] = "sender@example.com"
msg["To"] = "receiver@example.com"
msg["Subject"] = "通知"
server = smtplib.SMTP("smtp.example.com", 25)
server.login("sender@example.com", "password")
server.send_message(msg)
server.quit()
✅ Web 应用:系统通知、用户验证、报表推送。
🧮 七、常用包汇总表
| 模块 |
用途 |
是否标准库 |
安装命令 |
| csv |
读写 CSV 文件 |
✅ |
内置 |
| openpyxl |
读写 Excel |
❌ |
pip install openpyxl |
| pandas |
高级表格处理 |
❌ |
pip install pandas |
| python-docx |
Word 文档 |
❌ |
pip install python-docx |
| reportlab |
生成 PDF |
❌ |
pip install reportlab |
| pdfplumber |
解析 PDF |
❌ |
pip install pdfplumber |
| Pillow |
图像处理 |
❌ |
pip install pillow |
| smtplib/email |
邮件发送 |
✅ |
内置 |
✅ 小结
| 应用场景 |
推荐模块 |
功能说明 |
| 批量导入导出 |
csv, openpyxl, pandas |
表格数据操作 |
| 报告生成 |
python-docx, reportlab |
自动生成报告 |
| 图像管理 |
Pillow |
上传与水印 |
| 通知系统 |
smtplib, email.mime |
邮件发送 |
| 数据分析 |
pandas |
后端统计接口 |