基于PyPDF2 版本 3.0.0,用python3.11写一个脚本,在windows系统中根据关键字实现遍历某文件夹下所有pdf文档,找到pdf文档中包含关键字的文件名称、页码,写入word文档。代码中不要使用 PdfFileReader
时间: 2024-02-05 21:11:45 浏览: 132
Python利用PyPDF2库获取PDF文件总页码实例
好的,以下是基于 PyPDF2 版本 3.0.0 的代码实现:
```python
import os
import re
import docx
# 定义要搜索的文件夹路径和关键字
folder_path = r"C:\Users\user\Desktop\pdf_files"
keyword = "Python"
# 定义要保存的Word文档名称
doc_name = "search_result.docx"
# 创建Word文档对象
doc = docx.Document()
# 遍历文件夹下所有PDF文档
for file_name in os.listdir(folder_path):
if file_name.endswith(".pdf"):
file_path = os.path.join(folder_path, file_name)
with open(file_path, 'rb') as f:
# 读取PDF文件内容
pdf_contents = f.read().decode('utf-8', 'ignore')
# 查找关键字出现的页码
pattern = re.compile(r'\b{}\b'.format(keyword), re.IGNORECASE)
page_numbers = [str(page.start()+1) for page in re.finditer(pattern, pdf_contents)]
if page_numbers:
# 将结果写入Word文档
doc.add_paragraph(file_name)
doc.add_paragraph("关键字出现页码:" + ", ".join(page_numbers))
doc.add_page_break()
# 保存Word文档
doc.save(doc_name)
print("搜索完成!")
```
解释一下代码:
1. 首先定义了要搜索的文件夹路径和关键字。
2. 接着定义了要保存的Word文档名称,并创建了Word文档对象。
3. 然后使用 `os.listdir` 方法遍历文件夹下所有PDF文档。
4. 对于每个PDF文档,打开并读取其内容。这里使用了 `rb` 模式打开文件,并使用 `decode` 方法将其内容解码为字符串。
5. 使用正则表达式查找关键字出现的页码。这里使用了 `\b` 匹配单词边界,`re.IGNORECASE` 不区分大小写。
6. 如果找到了关键字,就将结果写入Word文档中。使用 `doc.add_paragraph` 方法添加段落,`doc.add_page_break` 方法添加分页符。
7. 最后保存Word文档,并输出一条搜索完成的提示信息。
需要注意的是,这里的代码没有使用 PdfFileReader,而是直接读取了PDF文件的内容。这种方法虽然简单,但可能无法处理一些特殊的PDF文件。如果遇到这种情况,可以考虑使用 PdfFileReader 来读取PDF文件,并按页读取内容。
阅读全文