Python批量扁平化子文件夹PDF报错:AttributeError问题求助
问题原因与解决方案
报错原因
- 非PDF文件被误处理:批量遍历子文件夹时未过滤文件后缀,导致加载了非PDF格式的文件,
PdfDocument.Load()返回None,后续调用IsFlatten属性时触发AttributeError。 - 文件路径拼接错误:遍历子文件夹时路径拼接逻辑有误,传入无效路径导致PDF加载失败,返回
None。 - 文件权限或损坏:子文件夹中的部分PDF文件存在读取权限限制,或文件本身已损坏,加载时返回
None。
修复步骤
- 严格过滤PDF文件:遍历文件时仅保留后缀为
.pdf(包含大小写变体,如.PDF)的文件,示例代码:
import os for root, dirs, files in os.walk("."): for file in files: if file.lower().endswith(".pdf"): file_path = os.path.join(root, file) # 后续处理逻辑
- 增加加载有效性判断:每次加载PDF后先检查是否成功加载,避免对
None对象执行操作:
from spire.pdf import PdfDocument doc = PdfDocument.Load(file_path) if doc is not None: # 执行你的处理逻辑,例如设置IsFlatten属性 doc.IsFlatten = True doc.SaveToFile(os.path.join(root, f"处理后_{file}")) doc.Close() else: print(f"无法加载文件:{file_path}")
- 检查异常文件状态:对于加载失败的文件,手动打开确认是否损坏,或调整文件的读取权限。
内容的提问来源于stack exchange,提问作者Rjtaylor
相关产品推荐
相关产品推荐

