提升效率之道:用一鍵搜尋文件內(nèi)關(guān)鍵字并復(fù)制的秘訣
直接雙擊啟動
鍵入所需內(nèi)容
1, 所要檢索的關(guān)鍵詞
2, 所在的文件夾
審查結(jié)果文件夾
名為"result"的結(jié)果文件夾,儲存了所有查詢成果
關(guān)鍵詞(KeyWords)
Python、關(guān)鍵字搜索、文件處理、提高效率
參考資料
1. Python 3.8: Python 是一種廣泛使用的高級編程語言,其設(shè)計的主要目標(biāo)是可讀性和編程的簡便。Python 3.8 是 Python 的一個版本,于 2019 年 10 月 14 日發(fā)布。這個版本增加了許多新功能和優(yōu)化,比如賦值表達(dá)式(又名 "海象操作符"),使用更多的位置參數(shù)在函數(shù)定義中,以及其他一些增強(qiáng)和修復(fù)。
2. bat 文件: BAT 文件是一個批處理文件,用于在 Microsoft Windows 系統(tǒng)中自動執(zhí)行一系列命令。其擴(kuò)展名為 ".bat"。bat 文件可以用記事本或其他文本編輯器創(chuàng)建和編輯,然后雙擊文件就能執(zhí)行一系列預(yù)先定義的命令。BAT 文件經(jīng)常用于自動化常見的計算機(jī)任務(wù),如文件管理和系統(tǒng)配置。
3. Python 代碼的含義: Python 代碼是使用 Python 編程語言編寫的指令集。每一行 Python 代碼都是一個或多個指令,告訴計算機(jī)執(zhí)行特定的任務(wù)。例如,你可以用 Python 代碼來創(chuàng)建變量,定義函數(shù),控制程序流程(例如,使用 if 語句和循環(huán)),處理數(shù)據(jù),等等。Python 的簡潔性和可讀性使得 Python 代碼比許多其他編程語言更易于理解和編寫。
希望你有基礎(chǔ)的Python知識,以便在求知的道路上走得更遠(yuǎn),持之以恒,必能有所收獲。
import os
import shutil
import docx
import time
from PyPDF2 import PdfReader
def search_keywords_in_text(text, keywords):
? ?return any(keyword in text for keyword in keywords)
def extract_paragraphs_with_keyword(doc, keywords):
? ?paragraphs = []
? ?for paragraph in doc.paragraphs:
? ? ? ?if any(keyword in paragraph.text for keyword in keywords):
? ? ? ? ? ?paragraphs.append(paragraph.text)
? ?return paragraphs
# 創(chuàng)建結(jié)果文件夾(如果不存在)
if not os.path.exists("result"):
? ?os.makedirs("result")
else:
? ?# 清空結(jié)果文件夾中的內(nèi)容
? ?shutil.rmtree("result")
? ?time.sleep(3)
? ?os.makedirs("result")
# 通過輸入函數(shù)獲取要檢索的關(guān)鍵字列表
keywords = input("請輸入要檢索的關(guān)鍵字,用逗號分隔:").split(",")
# 輸入目標(biāo) PDF 文件的路徑
pdf_directory = input("請輸入目標(biāo) PDF 文件的路徑:")
# 存儲已復(fù)制的文件名
copied_files = []
# 處理目標(biāo) PDF 文件夾
for filename in os.listdir(pdf_directory):
? ?if filename.endswith(".pdf"):
? ? ? ?# 處理PDF文件
? ? ? ?pdf_path = os.path.join(pdf_directory, filename)
? ? ? ?with open(pdf_path, "rb") as file:
? ? ? ? ? ?pdf = PdfReader(file)
? ? ? ? ? ?text = "".join(page.extract_text() for page in pdf.pages)
? ? ? ? ? ?if search_keywords_in_text(text, keywords):
? ? ? ? ? ? ? ?if filename not in copied_files: ?# 檢查是否已復(fù)制文件
? ? ? ? ? ? ? ? ? ?shutil.copy(pdf_path, os.path.join("result", filename))
? ? ? ? ? ? ? ? ? ?copied_files.append(filename)
? ? ? ? ? ? ? ?print("*" * 30)
? ? ? ? ? ? ? ?print(f"在文件 '{filename}' 中找到以下包含關(guān)鍵字的段落:")
? ? ? ? ? ? ? ?print("*" * 30)
? ? ? ? ? ? ? ?for page in pdf.pages:
? ? ? ? ? ? ? ? ? ?for paragraph in page.extract_text().split("\n"):
? ? ? ? ? ? ? ? ? ? ? ?if any(keyword in paragraph for keyword in keywords):
? ? ? ? ? ? ? ? ? ? ? ? ? ?print(paragraph)
? ?elif filename.endswith(".docx"):
? ? ? ?# 處理DOCX文件
? ? ? ?docx_path = os.path.join(pdf_directory, filename)
? ? ? ?doc = docx.Document(docx_path)
? ? ? ?text = "".join(paragraph.text for paragraph in doc.paragraphs)
? ? ? ?if search_keywords_in_text(text, keywords):
? ? ? ? ? ?if filename not in copied_files: ?# 檢查是否已復(fù)制文件
? ? ? ? ? ? ? ?shutil.copy(docx_path, os.path.join("result", filename))
? ? ? ? ? ? ? ?copied_files.append(filename)
? ? ? ? ? ?print("*" * 30)
? ? ? ? ? ?print(f"在文件 '{filename}' 中找到以下包含關(guān)鍵字的段落:")
? ? ? ? ? ?print("*" * 30)
? ? ? ? ? ?paragraphs_with_keyword = extract_paragraphs_with_keyword(doc, keywords)
? ? ? ? ? ?for paragraph in paragraphs_with_keyword:
? ? ? ? ? ? ? ?print(paragraph)
# 提示已完成處理
print("處理完成。")
雞貔鵜之詩
在代碼杠桿的魔力下,我心中蕩起了一陣難以言喻的喜悅,這個神奇的生物,承載著我對編碼世界的深深熱愛,將我的生活壓力漸漸消散,換來更多的快樂與寧靜。
編程開啟了一扇通往無限可能的大門。無論是探索問題的解決方案,還是自動化瑣碎的任務(wù),亦或是創(chuàng)造出令人驚嘆的應(yīng)用程序,編程都賦予了我無窮的力量,使我能夠舒展翅膀,在數(shù)字的世界中自由飛翔。
如果你渴望領(lǐng)略編程的魅力,只需選定一門語言,如Python、JavaScript、Java等,踏上這段奇妙之旅。借助雞貔鵜,在線教程、編程平臺和開發(fā)工具,你將迸發(fā)出個人興趣與無限創(chuàng)造力。無論是解決實際問題還是追逐內(nèi)心的激情,編程將為你開啟一扇通往快樂與成就的大門。
讓我們懷揣著文藝的夢想,在編程的世界中減輕生活的壓力,釋放更多快樂的光芒吧!讓我們與雞貔鵜一同起舞,以代碼的杠桿輕松超越生活的難題,享受創(chuàng)作和探索帶來的美好!
愛上雞貔鵜, 讓代碼杠桿減輕你的生活壓力, ???
微信號: jesseshachou
備注: gpt愛好者
或掃二維碼 ?