如何使用Python从多个PDF文件中批量提取第6页并另存为新文件
问题修复与可运行代码
原代码存在的问题
- 路径格式错误:Windows系统下路径中的单反斜杠是转义字符,会导致路径读取失效,同时PDF匹配规则应为
*.pdf而非*pdf - 语法错误:保存文件的代码行引号不配对,路径拼接逻辑错误,无法正确生成目标文件路径
- 逻辑遗漏:提取到的第6页没有添加到PdfFileWriter对象中,输出的文件会是空文件
- 冗余操作:with上下文管理器会自动关闭文件,不需要手动调用
f.close() - 额外风险:如果目标文件夹不存在会直接报错,需要提前做存在性判断
修正后完整代码
from PyPDF2 import PdfFileReader, PdfFileWriter import os import glob # 按需修改以下三个参数即可 source_dir = "C:/你的原PDF文件夹路径" # 路径用正斜杠或者双反斜杠都可以 target_dir = "C:/你的输出文件夹路径" file_prefix = "提取页_" # 自定义文件名前缀 # 自动创建目标文件夹(如果不存在) os.makedirs(target_dir, exist_ok=True) # 匹配原文件夹下所有PDF文件 pdf_list = glob.glob(os.path.join(source_dir, "*.pdf")) file_index = 1 for pdf_path in pdf_list: # 读取原PDF input_pdf = PdfFileReader(open(pdf_path, "rb")) # 提取第6页(索引从0开始,所以对应序号5) page_6 = input_pdf.getPage(5) # 写入新PDF pdf_writer = PdfFileWriter() pdf_writer.addPage(page_6) # 生成新文件路径 格式:前缀+序号.pdf new_file_name = f"{file_prefix}{file_index}.pdf" new_file_path = os.path.join(target_dir, new_file_name) # 保存文件 with open(new_file_path, "wb") as f: pdf_writer.write(f) file_index += 1
使用时只需要修改代码开头三个参数对应的路径和文件名前缀即可,运行后会自动遍历原文件夹下所有PDF,提取第6页按序号命名保存到目标文件夹。
内容的提问来源于stack exchange,提问作者Monica
相关产品推荐
相关产品推荐

