介绍
将多个 PDF 文件合并到一个文档中可能是一项繁琐的任务,尤其是当文件分布在多个目录中时。使用 Python,这项任务变得无缝且自动化。在本教程中,我们将使用 PyPDF2 创建一个命令行界面 (CLI) 工具,然后单击合并目录(包括其子目录)中的所有 PDF 文件,同时排除 .venv 和 .git 等特定目录。
先决条件
开始之前,请确保您具备以下条件:
- Python:版本 3.7 或更高版本。
- pip:Python 的包管理器。
-
所需的库:
- 安装 PyPDF2 进行 PDF 操作:
pip install PyPDF2
-
安装单击以创建 CLI:
pip install click
代码演练
这是我们的 CLI 工具的完整代码:
import click from pathlib import Path from PyPDF2 import PdfMerger import os EXCLUDED_DIRS = {".venv", ".git"} @click.command() @click.argument("directory", type=click.Path(exists=True, file_okay=False, path_type=Path)) @click.argument("output_file", type=click.Path(dir_okay=False, writable=True, path_type=Path)) def merge_pdfs(directory: Path, output_file: Path): """ Merge all PDF files from DIRECTORY and its subdirectories into OUTPUT_FILE, excluding specified directories like .venv and .git. """ # Initialize the PdfMerger merger = PdfMerger() # Walk through the directory tree, including the base directory for root, dirs, files in os.walk(directory): # Exclude specific directories dirs[:] = [d for d in dirs if d not in EXCLUDED_DIRS] # Convert the root to a Path object current_dir = Path(root) click.echo(f"Processing directory: {current_dir}") # Collect PDF files in the current directory pdf_files = sorted(current_dir.glob("*.pdf")) if not pdf_files: click.echo(f"No PDF files found in {current_dir}") continue # Add PDF files from the current directory for pdf in pdf_files: click.echo(f"Adding {pdf}...") merger.append(str(pdf)) # Write the merged output file output_file.parent.mkdir(parents=True, exist_ok=True) merger.write(str(output_file)) merger.close() click.echo(f"All PDFs merged into {output_file}") if __name__ == "__main__": merge_pdfs()
它是如何运作的
-
目录遍历:
- os.walk()函数递归遍历指定目录。
- 使用目录过滤器排除特定目录(例如 .venv、.git)。
-
PDF 文件集合:
- current_dir.glob("*.pdf") 收集当前目录下的所有 PDF 文件。
-
合并 PDF:
- PyPDF2 中的 PdfMerger 用于附加所有 PDF。
- 合并后的输出写入指定文件。
-
CLI 集成:
- 点击库可以轻松提供目录和输出文件路径作为参数。
运行工具
将代码保存到文件中,例如 merge_pdfs.py。从终端运行它,如下所示:
python merge_pdfs.py /path/to/directory /path/to/output.pdf
例子
假设您有以下目录结构:
/documents ├── file1.pdf ├── subdir1 │ ├── file2.pdf ├── subdir2 │ ├── file3.pdf ├── .git │ ├── ignored_file.pdf
按如下方式运行该工具:
python merge_pdfs.py /documents /merged.pdf
这会将 file1.pdf、file2.pdf 和 file3.pdf 合并为 merged.pdf,跳过 .git。
特征
-
递归合并:
- 该工具自动包含所有子目录中的 PDF。
-
目录排除:
- 排除 .venv 和 .git 等目录以避免不相关的文件。
-
排序合并:
- 确保 PDF 按排序顺序添加以获得一致的结果。
-
CLI 简单性:
- 为用户提供直观的界面来指定输入和输出路径。
注意事项和限制
-
大文件:
- 合并大量 PDF 可能会消耗大量内存。首先使用较小的数据集进行测试。
-
PDF 兼容性:
- 确保所有输入的 PDF 有效且未损坏。
-
自定义排除:
- 修改 EXCLUDED_DIRS 设置以根据需要排除其他目录。
结论
本教程演示如何使用 Python 自动合并目录结构中的 PDF。提供的 CLI 工具非常灵活,可以适应更复杂的工作流程。尝试一下,让我们知道它如何为您服务!
编码愉快! ?
以上是使用 Python 递归合并 PDF的详细内容。更多信息请关注PHP中文网其他相关文章!

本文解释了如何使用美丽的汤库来解析html。 它详细介绍了常见方法,例如find(),find_all(),select()和get_text(),以用于数据提取,处理不同的HTML结构和错误以及替代方案(SEL)

Python的statistics模块提供强大的数据统计分析功能,帮助我们快速理解数据整体特征,例如生物统计学和商业分析等领域。无需逐个查看数据点,只需查看均值或方差等统计量,即可发现原始数据中可能被忽略的趋势和特征,并更轻松、有效地比较大型数据集。 本教程将介绍如何计算平均值和衡量数据集的离散程度。除非另有说明,本模块中的所有函数都支持使用mean()函数计算平均值,而非简单的求和平均。 也可使用浮点数。 import random import statistics from fracti

Python 对象的序列化和反序列化是任何非平凡程序的关键方面。如果您将某些内容保存到 Python 文件中,如果您读取配置文件,或者如果您响应 HTTP 请求,您都会进行对象序列化和反序列化。 从某种意义上说,序列化和反序列化是世界上最无聊的事情。谁会在乎所有这些格式和协议?您想持久化或流式传输一些 Python 对象,并在以后完整地取回它们。 这是一种在概念层面上看待世界的好方法。但是,在实际层面上,您选择的序列化方案、格式或协议可能会决定程序运行的速度、安全性、维护状态的自由度以及与其他系

本文比较了Tensorflow和Pytorch的深度学习。 它详细介绍了所涉及的步骤:数据准备,模型构建,培训,评估和部署。 框架之间的关键差异,特别是关于计算刻度的

本文讨论了诸如Numpy,Pandas,Matplotlib,Scikit-Learn,Tensorflow,Tensorflow,Django,Blask和请求等流行的Python库,并详细介绍了它们在科学计算,数据分析,可视化,机器学习,网络开发和H中的用途

本文指导Python开发人员构建命令行界面(CLIS)。 它使用Typer,Click和ArgParse等库详细介绍,强调输入/输出处理,并促进用户友好的设计模式,以提高CLI可用性。

该教程建立在先前对美丽汤的介绍基础上,重点是简单的树导航之外的DOM操纵。 我们将探索有效的搜索方法和技术,以修改HTML结构。 一种常见的DOM搜索方法是EX

Linux终端中查看Python版本时遇到权限问题的解决方法当你在Linux终端中尝试查看Python的版本时,输入python...


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),