识别该文件夹下的pdf,按照pdf名称的第一个数字进行排序合并成一个新的pdf文件,名字叫all
from PyPDF2 import PdfMerger
import os
import re
def extract_number(filename):
# 从文件名中提取第一个数字
match = re.search(r'\d+', filename)
return int(match.group()) if match else float('inf') # 如果没有数字,返回无穷大
def merge_pdfs_in_folder():
# 指定文件夹路径
folder_path = r"**含多个pdf需要合并的文件夹路径**" #!!!!!输入路径
# 创建一个PDF合并器对象
merger = PdfMerger()
try:
# 获取文件夹中所有的PDF文件
pdf_files = [f for f in os.listdir(folder_path) if f.lower().endswith('.pdf')]
if not pdf_files:
print("文件夹中没有找到PDF文件")
return
# 按文件名中的第一个数字排序
pdf_files.sort(key=extract_number)
# 按顺序合并PDF文件
for pdf_file in pdf_files:
file_path = os.path.join(folder_path, pdf_file)
merger.append(file_path)
print(f"正在处理: {pdf_file}")
# 保存合并后的文件
output_path = os.path.join(folder_path, "all.pdf")
merger.write(output_path)
print(f"PDF文件已成功合并,保存至: {output_path}")
except Exception as e:
print(f"合并过程中发生错误: {str(e)}")
finally:
# 关闭合并器
merger.close()
if __name__ == "__main__":
merge_pdfs_in_folder()