Python批量替换文件内容是办公自动化和数据处理中的高频需求,通过脚本实现高效、精准的文本替换,可节省90%以上人工操作时间,尤其适用于日志清洗、数据预处理、SEO优化等场景。以下是关键要点与实践指南:
-
基础方法
使用open()
读写文件结合str.replace()
是最简单的实现,适合小文件处理。例如替换input.txt
中的"旧文本"为"新文本":python复制
with open("input.txt", "r") as f: content = f.read().replace("旧文本", "新文本") with open("output.txt", "w") as f: f.write(content)
-
正则表达式进阶
复杂替换(如保留部分原内容)需用re.sub()
,例如将HTML标题<h>标题</h>
替换为<h>\</h>
:python复制
import re pattern = r"<h>(.*?)</h>" with open("html.txt", "r+") as f: content = re.sub(pattern, r"<h>\</h>", f.read()) f.seek(0) f.write(content)
-
批量处理与工程优化
- 多文件替换:通过
os.walk
递归处理目录下所有文件,例如批量修改.txt
文件内容:python复制
import os for root, _, files in os.walk("目录路径"): for file in files: if file.endswith(".txt"): file_path = os.path.join(root, file) # 替换逻辑(同上)
- 大文件优化:使用
fileinput
模块逐行处理,避免内存溢出:python复制
import fileinput for line in fileinput.input("large_file.txt", inplace=True): print(line.replace("错误词", "修正词"), end="")
- 多文件替换:通过
-
特殊文件支持
Word/Excel等文档需专用库(如python-docx
、openpyxl
)。例如替换Word中的"待办"为"完成"并保留格式:python复制
from docx import Document doc = Document("文件.docx") for para in doc.paragraphs: if "待办" in para.text: para.text = para.text.replace("待办", "完成") doc.save("结果.docx")
-
安全与验证
- 备份原文件:替换前复制文件副本
- 测试规则:先用样本文件验证逻辑
- 异常处理:捕获文件编码错误(如
try-except
块)
提示:根据场景选择工具——简单替换用基础方法,结构化文本用正则表达式,海量文件需性能优化。定期检查替换结果,确保数据一致性。