You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python提取文档库所有PDF首页时遇文件定位错误求助

问题分析与解决建议

核心问题是文件路径错误:

  • os.listdir(directory)返回的只是Fund Docs目录里的文件名,不是完整路径。你直接用open(entry, 'rb')时,Python会在脚本当前的工作目录下找这个文件,而不是在Fund Docs目录里,所以哪怕文件名打印正确,实际找不到对应文件。

具体修复方案

1. 拼接完整文件路径

用os.path.join(directory, entry)生成文件的完整路径,确保open能定位到正确的文件位置。

2. 过滤非PDF文件

目录里可能存在文件夹、非PDF格式的文件,提前过滤掉这些内容,避免无效操作报错。

3. 添加异常处理

处理PDF读取时的常见异常(比如文件损坏、加密、无权限等),防止单个文件出错导致整个脚本中断。

修改后的代码

import os
import PyPDF2
from PyPDF2 import PdfFileReader

# 目标目录
directory = 'Fund Docs'
entries = os.listdir(directory)

for entry in entries:
    # 拼接完整文件路径
    full_path = os.path.join(directory, entry)
    
    # 跳过文件夹,只处理PDF文件(不区分大小写)
    if not os.path.isfile(full_path) or not entry.lower().endswith('.pdf'):
        print(f"跳过非PDF文件/文件夹: {entry}")
        continue
    
    print(f"正在处理: {entry}")
    try:
        # 打开PDF文件(用完整路径)
        with open(full_path, 'rb') as pdfFileObj:
            pdfReader = PdfFileReader(pdfFileObj)
            
            # 检查PDF是否有页面
            if pdfReader.numPages == 0:
                print(f"{entry} 无页面内容")
                continue
            
            # 提取首页文本
            pageObj = pdfReader.getPage(0)
            text = pageObj.extractText()
            print("首页文本:\n", text)
    
    except PyPDF2.errors.PdfReadError:
        print(f"{entry} 是损坏或加密的PDF,无法读取")
    except Exception as e:
        print(f"处理 {entry} 时出错: {str(e)}")

额外说明

  • 用with open(...)代替手动close(),Python会自动处理文件关闭,避免资源泄漏。
  • 加入了PDF页面检查,防止空PDF报错。
  • 区分大小写的PDF后缀判断,兼容.PDF大写后缀的文件。

内容的提问来源于stack exchange,提问作者Data_Science_Mick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 17:35:24