下面给你一个实用、可直接用的 Python 方案,可以在多个 Word(.docx)文档中一键搜索关键词,并输出匹配到的文件名与位置内容。
一、实现思路(简单版)
- 遍历指定文件夹下的所有
.docx文件 - 读取 Word 中的:
- 正文段落
- (可选)表格内容
- 判断是否包含关键词
- 输出结果(文件名 + 匹配内容)
二、准备环境
1️⃣ 安装依赖
pip install python-docx
三、基础版:搜索多个 Word 文档正文
示例目录结构
docs/
├── a.docx
├── b.docx
└── c.docx
Python 示例代码(正文搜索)
import os
from docx import Document
def search_word_docs(folder_path, keyword):
results = []
for filename in os.listdir(folder_path):
if filename.endswith(".docx"):
file_path = os.path.join(folder_path, filename)
doc = Document(file_path)
for i, para in enumerate(doc.paragraphs):
if keyword in para.text:
results.append({
"file": filename,
"paragraph": i + 1,
"content": para.text.strip()
})
return results
if __name__ == "__main__":
folder = "docs" # Word 文件夹路径
keyword = "Python" # 要搜索的关键词
matches = search_word_docs(folder, keyword)
if matches:
for item in matches:
print(f"📄 文件: {item['file']}")
print(f"📌 段落: 第 {item['paragraph']} 段")
print(f"🔍 内容: {item['content']}")
print("-" * 50)
else:
print("❌ 未找到匹配内容")
四、进阶版:同时搜索【正文 + 表格】
Word 里的重要内容经常藏在表格里,建议一起搜。
升级版代码(正文 + 表格)
import os
from docx import Document
def search_word_docs(folder_path, keyword):
results = []
for filename in os.listdir(folder_path):
if not filename.endswith(".docx"):
continue
file_path = os.path.join(folder_path, filename)
doc = Document(file_path)
# 搜索正文
for i, para in enumerate(doc.paragraphs):
if keyword in para.text:
results.append((filename, "正文", i + 1, para.text.strip()))
# 搜索表格
for t_index, table in enumerate(doc.tables):
for r_index, row in enumerate(table.rows):
for c_index, cell in enumerate(row.cells):
if keyword in cell.text:
results.append((
filename,
f"表格{t_index + 1}",
f"行{r_index + 1}列{c_index + 1}",
cell.text.strip()
))
return results
if __name__ == "__main__":
folder = "docs"
keyword = "数据库"
results = search_word_docs(folder, keyword)
for r in results:
print(f"📄 文件: {r[0]}")
print(f"📍 位置: {r[1]} - {r[2]}")
print(f"🔍 内容: {r[3]}")
print("-" * 60)
五、常见扩展需求(我可以继续帮你)
你如果有下面这些需求,我可以直接给你现成代码:
- ✅ 忽略大小写搜索
- ✅ 正则表达式搜索
- ✅ 导出为 Excel / CSV
- ✅ GUI 图形界面(点按钮搜索)
- ✅ 支持
.doc + .docx - ✅ 支持中文分词搜索
- ✅ Word 数千个文档的高性能搜索
六、适用场景
✔ 论文 / 合同 / 制度文件检索
✔ 日志 / 报告批量排查
✔ 学生选课系统文档审查(你之前做 Spring Boot 项目时很适合)
✔ 自媒体 / 纪录片素材整理
好,那我直接给你一个可双击运行的「Word 文档一键搜索工具(带图形界面)」,不用写命令行,点按钮就能搜 👍
下面这个方案 稳定、简单、适合长期用。
一、功能说明(你将得到什么)
✅ 图形界面(窗口)
✅ 选择 Word 文件夹
✅ 输入关键词
✅ 搜索 正文 + 表格
✅ 搜索结果实时显示
✅ 支持中文
✅ 可一键打包成 .exe
二、准备环境(只需一次)
1️⃣ 安装依赖
pip install python-docx
(tkinter 是 Python 自带的,不用装)
三、完整 GUI 程序代码(直接可用)
📌 保存为:
word_search_gui.py
import os
import tkinter as tk
from tkinter import filedialog, messagebox, scrolledtext
from docx import Document
def search_docs():
folder = folder_path.get()
keyword = keyword_entry.get().strip()
if not folder or not keyword:
messagebox.showwarning("提示", "请选择文件夹并输入关键词")
return
result_text.delete(1.0, tk.END)
found = False
for root, dirs, files in os.walk(folder):
for file in files:
if file.endswith(".docx"):
file_path = os.path.join(root, file)
try:
doc = Document(file_path)
# 搜索正文
for i, para in enumerate(doc.paragraphs):
if keyword in para.text:
found = True
result_text.insert(tk.END,
f"📄 文件:{file}\n"
f"📌 正文 第 {i+1} 段\n"
f"🔍 内容:{para.text}\n"
f"{'-'*50}\n"
)
# 搜索表格
for t_idx, table in enumerate(doc.tables):
for r_idx, row in enumerate(table.rows):
for c_idx, cell in enumerate(row.cells):
if keyword in cell.text:
found = True
result_text.insert(tk.END,
f"📄 文件:{file}\n"
f"📌 表格 {t_idx+1} 行{r_idx+1} 列{c_idx+1}\n"
f"🔍 内容:{cell.text}\n"
f"{'-'*50}\n"
)
except Exception as e:
print(f"读取失败:{file_path}", e)
if not found:
result_text.insert(tk.END, "❌ 未找到匹配内容")
def choose_folder():
path = filedialog.askdirectory()
if path:
folder_path.set(path)
# ================= GUI =================
root = tk.Tk()
root.title("Word 文档一键搜索工具")
root.geometry("800x600")
# 文件夹选择
frame_top = tk.Frame(root)
frame_top.pack(pady=10)
folder_path = tk.StringVar()
tk.Label(frame_top, text="Word 文件夹:").grid(row=0, column=0, padx=5)
tk.Entry(frame_top, textvariable=folder_path, width=50).grid(row=0, column=1)
tk.Button(frame_top, text="选择文件夹", command=choose_folder).grid(row=0, column=2, padx=5)
# 关键词
tk.Label(frame_top, text="关键词:").grid(row=1, column=0, pady=10)
keyword_entry = tk.Entry(frame_top, width=30)
keyword_entry.grid(row=1, column=1, sticky="w")
tk.Button(frame_top, text="🔍 开始搜索", command=search_docs).grid(row=1, column=2)
# 结果区
result_text = scrolledtext.ScrolledText(root, wrap=tk.WORD)
result_text.pack(expand=True, fill=tk.BOTH, padx=10, pady=10)
root.mainloop()
四、如何使用(3 步)
1️⃣ 双击运行 word_search_gui.py
2️⃣ 点击【选择文件夹】
3️⃣ 输入关键词 → 点【开始搜索】
📌 搜索结果会直接显示在窗口里
五、打包成 EXE(无需 Python 环境)
如果你想发给别人用 👇
1️⃣ 安装打包工具
pip install pyinstaller
2️⃣ 打包
pyinstaller -F -w word_search_gui.py
📁 生成位置:
dist/word_search_gui.exe
双击即可运行 ✅