在日常工作中,我们经常会遇到需要批量合并PDF文件的需求。本文将详细介绍如何使用Python脚本来实现这一功能。我们将使用PyPDF2
库来完成合并的任务,并为脚本添加一些用户交互以提高其实用性。
导入用到的包 📦
在开始编写代码之前,我们需要导入一些必要的Python包。以下是我们将要使用的包:
os
:用于进行操作系统的交互,如更改工作目录和列出目录内容。time
:用于暂停程序执行,例如在程序结束前。PyPDF2
:一个纯Python实现的库,用于读取、分割、合并PDF文件。
确保在开始之前已经安装了PyPDF2
库,如果没有安装,可以使用pip install PyPDF2
命令进行安装。
import os
from time import sleep
from PyPDF2 import PdfMerger, PdfReader
代码示例与解释 🧩
以下是一个完整的Python脚本,用于批量合并PDF文件。接下来,我们将对每个部分的代码进行详细注释和解释。
# 打包命令,用于生成Windows可执行文件,这一行在实际运行脚本时可以忽略
# nuitka --standalone --mingw64 --show-progress --show-memory --nofollow-import-to=PyPDF2,PIL,tkinter,http,email --windows-icon-from-ico=pdf合并.ico --output-dir=o 1.批量合并PDF.py
# 打印软件信息,告知用户软件提供者信息
print("软件由 微信 Jimmie_ok 提供,有使用问题联系微信反馈,可定制各类软件,欢迎咨询")
# 获取用户输入的文件夹路径
file_path = input("请输入需要合并的PDF所在路径:")
# 尝试更改工作目录到用户输入的路径
try:
os.chdir(file_path)
except OSError as e:
print(e)
print("文件夹不存在,请检查路径是否正确,程序5s后异常退出")
sleep(5)
exit()
# 列出当前工作目录下的所有文件
pdfs = os.listdir('.')
# 按照文件的修改时间进行排序,这样可以保证合并的顺序
sorted_file_list = sorted(pdfs, key=lambda x: os.path.getmtime(os.path.join('.', x)))
# 创建一个PdfMerger对象,用于合并PDF
pdf_all = PdfMerger()
# 遍历排序后的PDF文件列表
for pdf in sorted_file_list:
# 以二进制读模式打开PDF文件
with open(pdf, "rb") as temp:
# 创建一个PdfReader对象
pdfreader = PdfReader(temp)
# 将当前PDF添加到合并对象中
pdf_all.append(pdfreader, import_outline=True)
# 定义合并后PDF的保存路径和文件名
pdf_save = open(r".\pdfall.pdf", "wb")
# 将合并后的PDF写入文件
pdf_all.write(pdf_save)
# 关闭保存的PDF文件
pdf_save.close()
# 打印完成信息并在5秒后退出程序
print("合并完成,程序5秒后自动关闭")
sleep(5)
如何使用该脚本 🛠️
确保已经安装了Python环境和
PyPDF2
库。将上述脚本保存为
.py
文件,例如merge_pdfs.py
。打开终端或命令提示符,导航到脚本所在的目录。
运行脚本:
python merge_pdfs.py
。根据提示输入包含PDF文件的文件夹路径。
等待脚本执行完成,合并后的PDF文件将保存在输入的文件夹中,文件名为
pdfall.pdf
。
结语 🎉
使用Python来批量合并PDF文件是一个高效且易于定制的解决方案。本文介绍的脚本提供了一个基础的示例,您可以根据自己的需求进行修改和扩展。如果您在使用过程中遇到任何问题,可以加微信一起学习交流。