PyPDF2.errors.DeprecationError:reader.numPages已弃用,并在PyPDF2 3.0.0中删除。请改用 len(reader.pages)

PyPDF2.errors.DeprecationError: reader.numPages is deprecated and was removed in PyPDF2 3.0.0. Use len(reader.pages) instead

提问人:linux01 提问时间:10/31/2023 更新时间:11/2/2023 访问量:251

问:

我想使用 python 拆分一个包含许多页面的 PDF 文件,脚本如下所示:

#!/usr/bin/python3

from PyPDF2 import PdfFileWriter, PdfReader

inputpdf = PdfReader(open("/pdf2xls/split_pdf/xyz.pdf", "rb"))

for i in range(inputpdf.numPages):
    output = PdfFileWriter()
    output.addPage(inputpdf.getPage(i))
    with open("/pdf2xls/split_pdf/xyz-page%s.pdf" % (i+1), "wb") as outputStream:
        output.write(outputStream)

但是,它抛出以下错误

Traceback (most recent call last):
  File "/root/scripts/pdf2xls/Test/T2/pdf_split.py", line 7, in <module>
    for i in range(inputpdf.numPages):
  File "/usr/local/lib/python3.9/dist-packages/PyPDF2/_reader.py", line 467, in numPages
    deprecation_with_replacement("reader.numPages", "len(reader.pages)", "3.0.0")
  File "/usr/local/lib/python3.9/dist-packages/PyPDF2/_utils.py", line 369, in deprecation_with_replacement
    deprecation(DEPR_MSG_HAPPENED.format(old_name, removed_in, new_name))
  File "/usr/local/lib/python3.9/dist-packages/PyPDF2/_utils.py", line 351, in deprecation
    raise DeprecationError(msg)
PyPDF2.errors.DeprecationError: reader.numPages is deprecated and was removed in PyPDF2 3.0.0. Use len(reader.pages) instead.

我该如何解决这个问题?请指导我。

python-3.x pypdf

评论

1赞 Giacomo Catenazzi 10/31/2023
您阅读了错误消息吗?它准确地告诉你应该改变什么。
0赞 linux01 10/31/2023
是的,我这样做了,现在我收到以下错误:''' PyPDF2.errors.DeprecationError:reader.getPage(pageNumber) 已弃用,并在 PyPDF2 3.0.0 中删除。请改用 reader.pages[page_number]。```

答:

0赞 Martin Thoma 11/2/2023 #1

您只需要遵循错误消息即可。

PyPDF2 已被弃用并移回 pypdf。当我们进行该切换时,我们确保 pypdf 类/方法/函数遵循典型的 Python 命名方案。因此,我们将它们从 重命名为 。我们还从 getter (like ) 切换到 properties (like )。snakeCasecamel_case.getPage(index).pages[index]

您可以看到 pages 属性的行为类似于列表。如果你想得到页数,你只需调用 .len( reader.pages)

有关详细信息,请参阅官方迁移指南:https://pypdf2.readthedocs.io/en/3.0.0/user/migration-1-to-2.html

您阅读了错误消息吗?它准确地告诉你应该改变什么。

是的,我这样做了,现在我收到以下错误:''' PyPDF2.errors.DeprecationError:reader.getPage(pageNumber) 已弃用,并在 PyPDF2 3.0.0 中删除。请改用 reader.pages[page_number]。

你需要一个接一个地处理它们。别担心,数量不多,消息会告诉您该怎么做。