如何用PyPDFDirectoryLoader加载指定PDF列表?glob参数异常排查
解决PyPDFDirectoryLoader加载指定PDF列表的问题
问题原因
PyPDFDirectoryLoader的glob参数依赖fnmatch模块的简单通配符匹配规则,而非glob.glob支持的扩展正则/Shell风格大括号语法。你尝试的"a.pdf|b.pdf"或"[a.pdf|b.pdf|c.pdf]"写法不符合fnmatch的匹配逻辑,因此无法匹配到文件。
解决方案
方案1:逐个加载指定文件
直接使用PyPDFLoader单独加载每个目标PDF,再合并文档:
from langchain_community.document_loaders import PyPDFLoader import os files_to_load = ["a.pdf", "b.pdf", "c.pdf"] pdf_dir = "./your_pdf_directory" # 替换为你的PDF存放目录 docs = [] for file_name in files_to_load: file_path = os.path.join(pdf_dir, file_name) loader = PyPDFLoader(file_path) docs.extend(loader.load())
方案2:用file_filter自定义过滤逻辑
利用PyPDFDirectoryLoader继承的file_filter参数,传入一个判断函数筛选目标文件:
from langchain_community.document_loaders import PyPDFDirectoryLoader import os files_to_load = {"a.pdf", "b.pdf", "c.pdf"} # 用集合提升查找效率 pdf_dir = "./your_pdf_directory" loader = PyPDFDirectoryLoader( path=pdf_dir, file_filter=lambda file_path: os.path.basename(file_path) in files_to_load ) docs = loader.load()
说明
- 方案2更适合大量文件的场景,避免重复创建加载器实例
file_filter接收的参数是文件的完整路径,因此需要用os.path.basename()提取文件名再判断
内容的提问来源于stack exchange,提问作者nico
相关产品推荐
相关产品推荐

