PyPDF2 3.0.0统计目录PDF页数报错问题求助
解决PyPDF2 3.x统计PDF页数及遍历目录的问题
错误原因分析
你最后遇到的AttributeError: 'PdfReader' object has no attribute 'len',是因为误把内置函数len()写成了对象的属性调用(比如reader.len()),正确的写法是用len(reader.pages)来获取页数。
正确实现代码
下面是适配PyPDF2 3.x版本的完整脚本,能遍历指定目录下所有PDF文件并统计页数:
from pathlib import Path from PyPDF2 import PdfReader # 指定要遍历的目录,这里用当前目录,可自行修改 target_dir = Path(".") # 遍历目录下所有PDF文件(含子目录) for pdf_path in target_dir.rglob("*.pdf"): try: # 初始化PdfReader实例 reader = PdfReader(pdf_path) # 获取页数:通过内置len()函数读取pages属性的长度 page_count = len(reader.pages) print(f"文件: {pdf_path.name},页数: {page_count}") except Exception as e: print(f"处理文件 {pdf_path.name} 时出错: {str(e)}")
关键修改点说明
- 导入
PdfReader替代旧版的PdfFileReader - 获取页数时,使用
len(reader.pages),而非已弃用的reader.getNumPages()或错误的reader.len() - 用
pathlib.Path的rglob方法可递归遍历子目录下的所有PDF文件,写法比os模块更简洁直观
额外提示
- 若之前安装的是PyPDF2旧版本,执行
pip install --upgrade PyPDF2更新到3.x版本 - 脚本中的异常处理可避免因损坏的PDF文件导致程序终止,适合批量处理场景
内容的提问来源于stack exchange,提问作者Assassin47
相关产品推荐
相关产品推荐

