利用python将含有某个“词语”的文件找出

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 文件。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值