You need to enable JavaScript to run this app. Python 提取PDF页码转换为列表时输出None的问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

Python 提取PDF页码转换为列表时输出None的问题咨询

错误原因

  • list.append() 是原地修改方法,本身没有返回值,默认返回None,所以你直接打印num_pages.append(dc)自然会输出None
  • 你只在遍历页码的for循环结束后才执行了一次append,此时dc已经被覆盖为最后一个页码的值,前面的289到292都没有被加入列表
  • 后缀判断逻辑错误:if '.pdf' or '.PDF' in i 的写法永远返回True,因为or运算符左侧的'.pdf'属于非空字符串,布尔值为True,会直接触发判断,不管文件是不是pdf格式
  • 打开pdf文件后先执行了一次PDFPage.get_pages读取了全部内容,文件指针已经移动到文件末尾,后续再创建PDFParser解析时可能出现读取异常
  • 路径拼接直接用字符串相加可能出现斜杠缺失/重复的问题,建议用os.path.join处理

修正后代码

import os
from pdfminer.pdfpage import PDFPage
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
# 保留你原有的page_interpreter相关导入即可

allmypdfs = []
files = []
num_pages = []
# 保留你原有定义的folders列表即可

for folder in folders:
    alllfiles = os.listdir(folder)
    firstpdfs = ""
    for i in alllfiles:
        # 修正pdf后缀判断逻辑
        if i.lower().endswith('.pdf'):
            firstpdfs = i
            print('PDF-Names--', firstpdfs)
            files.append(firstpdfs)
            break
    # 修正路径拼接逻辑
    pdf_path = os.path.join(folder, firstpdfs)
    with open(pdf_path, 'rb') as fh:
        parser = PDFParser(fh)
        document = PDFDocument(parser)
        # 遍历页码时直接添加到列表
        for pages, pdfObjects in enumerate(PDFPage.create_pages(document)):
            dc = pages + 1
            print(dc)
            num_pages.append(dc)
        # 如果之前的page_interpreter处理是必要逻辑,放开下方注释重置文件指针后再执行
        # fh.seek(0)
        # for page in PDFPage.get_pages(fh, caching=True, check_extractable=True):
        #     page_interpreter.process_page(page)

        # 其余原有代码保留
# 直接打印完整列表即可得到预期输出
print('HEYY', num_pages)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 00:21:02