Python如何从多格式文件夹中自动提取唯一PDF文件名存入变量
问题背景
需要使用Python实现以下需求:在包含.doc、.txt、.html等多种不同扩展名文件的文件夹中,仅提取其中的PDF文件或PDF文件名存入变量。
场景示例
假设桌面存在Mandar、html两个文件夹,在html文件夹中放入任意PDF文件并命名为'dell',在Mandar文件夹中创建demo.py文件;同时在html文件夹中按需创建2-4个txt文件,此时html文件夹内包含若干txt文件与仅1个PDF文件。
初始测试代码如下:
import os import PyPDF2 # install via 'pip install PyPDF2' # Put location of your pdf file i.e. dell.pdf in 'location' variable location = "C:/Users/Desktop/html/" n = "dell.pdf" path = os.path.join(location, n) reader = PyPDF2.PdfReader(path) pages = len(reader.pages) print(f"The no. of pages in {n} is {pages}.")
运行上述代码将输出:The no. of pages in dell.pdf is NUM.,其中NUM为对应PDF文件的总页数。
具体需求
已知html文件夹内始终仅存放1个PDF文件,文件名不固定(可为dell、ecc或任意名称),需要实现自动将该PDF文件名赋值给变量n,无需手动修改代码中的文件名配置,即可让程序正常运行,输出对应PDF文件的名称与页数。
实现方法
直接遍历目标文件夹,筛选后缀为PDF的文件即可,已知文件夹内只有1个PDF,取匹配到的第一个结果就能用。
修改后的完整代码:
import os import PyPDF2 # 依赖安装命令:pip install PyPDF2 # 配置目标文件夹路径 location = "C:/Users/Desktop/html/" # 遍历文件夹,筛选所有PDF后缀的文件 pdf_list = [f for f in os.listdir(location) if f.lower().endswith(".pdf")] # 取唯一的PDF文件名赋值给n n = pdf_list[0] path = os.path.join(location, n) reader = PyPDF2.PdfReader(path) pages = len(reader.pages) print(f"The no. of pages in {n} is {pages}.")
逻辑说明
- 用
os.listdir()获取目标路径下所有条目名称 - 匹配后缀时加
lower()是为了兼容大写后缀的PDF文件(比如后缀为.PDF的文件也能被识别到) - 由于明确知道文件夹内只有1个PDF,不需要做多文件判断,直接取列表第一个元素即可
内容的提问来源于stack exchange,提问作者Mandar Arun Bedi
相关产品推荐
相关产品推荐

