1. 适用条件:
- 文件很多,查找相关文件很麻烦
- 需要通过检索关键词将文件找出
2. 功能:
- 进行文件中的词语检索
- 输入词组,检索该词语是否在 .docx 、 .pptx 、 .pdf 文件中出现,并将文件复制出来,方便查看。
3. 用法:
运行,输入要检索的词语,则会将含有该词语的 .docx 、 .pptx 、.pdf 文件复制到以该词语命名的文件夹中。
4. 代码:
find_word_in_doc_ppt_pdf_file.py:
#! -*- coding:utf-8 -*-
# 功能:进行词语检索,输入词组,检索该词语是否在 .docx 和 .pptx 文件中出现
import glob
from docx import Document # pip install python-docx
from pptx import Presentation # pip install python-pptx
import shutil
import os
import fitz # pip install PyMuPDF
# 遍历文件夹及其子文件夹
def get_doc_files(directory):
doc_files = []
for root_1, dirs_1, files_1 in os.walk(directory):
for file_1 in files_1:
if file_1.endswith(".docx"):
doc_files.append(os.path.join(root_1, file_1))
return doc_files
def get_ppt_files(directory):
ppt_files = []
for root_2, dirs_2, files_2 in os.walk(directory):
for file_2 in files_2:
if file_2.endswith(".pptx"):
ppt_files.append(os.path.join(root_2, file_2))
return ppt_files
def get_pdf_files(directory):
pdf_files = []
for root_3, dirs_3, files_3 in os.walk(directory):
for file_3 in files_3:
if file_3.endswith(".pdf"):
pdf_files.append(os.path.join(root_3, file_3))
return pdf_files
def search_word_in_ppt_file(word, filepath):
presentation = Presentation(filepath)
for slide in presentation.slides:
for shape in slide.shapes:
if hasattr(shape, "text"):
if word in shape.text:
return True
return False
def search_word_in_word_file(word, filepath):
document = Document(filepath)
for paragraph in document.paragraphs:
if word in paragraph.text:
return True
return False
def search_word_in_pdf_file(word, filepath):
doc = fitz.open(filepath)
for page in doc:
text = page.get_text()
if word in text:
return True
return False
# 调用函数进行查找
# word = "挂图"
word = input('请输入你要检索的词语:')
os.mkdir(word)
directory = ".\\"
doc_files = get_doc_files(directory)
ppt_files = get_ppt_files(directory)
pdf_files = get_pdf_files(directory)
for doc_file in doc_files:
doc_fl = doc_file.split('\\')[-1]
if doc_fl[0] != '~':
result_1 = search_word_in_word_file(word, doc_file)
if result_1:
print('DOC:\t'+doc_file)
shutil.copy(doc_file, word)
for ppt_file in ppt_files:
ppt_fl = ppt_file.split('\\')[-1]
if ppt_fl[0] != '~':
result_2 = search_word_in_ppt_file(word, ppt_file)
if result_2:
print('PPT:\t'+ppt_file)
shutil.copy(ppt_file, word)
for pdf_file in pdf_files:
pdf_fl = pdf_file.split('\\')[-1]
if pdf_fl[0] != '~':
result_3 = search_word_in_pdf_file(word, pdf_file)
if result_3:
print('PDF:\t'+pdf_file)
shutil.copy(pdf_file, word)
4. 生成 exe:
(1)基于上述代码使用以下命令生成的exe文件:
# 打开cmd,运行
pyinstaller -F find_word_in_doc_ppt_pdf_file.py
(2)生成的exe文件链接:
链接:https://pan.baidu.com/s/1BBVhYdmszVZJ5qJKc808qg
提取码:l8dq
(3)运行:
- 将exe文件放在要进行检索的目录下;
- 双击exe文件,弹出cmd面板;
- 输入要检索的词语,enter键。
则会查找出该目录及其子目录下包含该词语的 .docx 、 .pptx 和 .pdf 文件。