几十个 PDF 要拼成一个?15 行 Python 批量合并

2026-10-02 · 喵窝资源铺

报销要把发票 PDF 拼一起、申报材料要按编号合并、老师收作业要汇总几十份——在线合并网站要么限文件数要么让你传隐私文件。这篇给一个 15 行、本地运行 的 Python 脚本:把一个文件夹里的所有 PDF 按文件名顺序合并成一个。本文代码实跑验证,真实输出见下。

完整脚本

先 pip install pypdf,脚本保存为 merge_pdfs.py,在 PDF 文件夹里运行 python merge_pdfs.py . all.pdf(第一个参数是目录,第二个是输出文件名):

"""批量合并PDF:按文件名排序合并目录下所有PDF。用法:python merge_pdfs.py [目录] [输出文件]"""
import os, sys
from pypdf import PdfWriter

FOLDER = sys.argv[1] if len(sys.argv) > 1 else "."
OUT = sys.argv[2] if len(sys.argv) > 2 else "merged.pdf"
files = sorted(f for f in os.listdir(FOLDER)
               if f.lower().endswith(".pdf") and f != OUT)
w = PdfWriter()
for f in files:
    w.append(os.path.join(FOLDER, f))
with open(os.path.join(FOLDER, OUT), "wb") as fh:
    w.write(fh)
print(f"合并了 {len(files)} 个PDF -> {OUT}")
for f in files:
    print(" +", f)

实跑结果

我造了 5 个测试 PDF(part01~part05),跑一遍的输出:

合并了 5 个PDF -> all.pdf
 + part01.pdf
 + part02.pdf
 + part03.pdf
 + part04.pdf
 + part05.pdf

验证产物:合并出的 all.pdf 共 5 页(每个源文件 1 页,页数对得上)。再跑一遍验证幂等:

合并了 5 个PDF -> all.pdf

第二次运行合并的还是 5 个源文件——输出文件 all.pdf 自己没有被并进去。

三个容易踩的坑

再往上是什么活?

脚本处理的是"一个文件夹按名字顺序拼"。如果你要的是「每个 PDF 中间插一页空白分隔」「按部门子文件夹分别合并」「合并后加书签/目录页」——逻辑要再包一层,可以直接找我们代写(见下)。

不想自己跑?我们代做。描述你的合并场景(多少个文件、什么顺序、要不要分隔页),9.9 元起,AI 编写 + 人工核验交付,24 小时内给出定制脚本 + 使用说明。
⚠️ 虚拟物品一经交付概不退款;未达到承诺效果免费重做。
👉 喵窝资源铺 · 服务清单

相关阅读:批量重命名 · 批量压缩图片 · Python 自动化能帮你做什么