在 PyPDF PdfFileReader 中循环遍历页面范围会产生奇怪的循环

Looping through a page range in PyPDF PdfFileReader gives strange loops

我有一个 PDF,它由 4 页组成,我想将它分成单独的文档并根据页码重命名它们。问题是我有一个循环来循环遍历每个页面,基于:for page in range(0, pdfReader.numpages) 但是每次它应该结束时它都会继续并创建重复项。我做了一个打印(页面)来查看发生了什么并得到:

0 1 2 3 0 0 0 0

将范围切换为 range(1, pdfReader.numpages) 使循环 1,2,3 并跳过第一页。使循环 (0, pdfReader.numpages+1) 给出正确的文件输出但给出错误 IndexError: list index out of range

import os, PyPDF2, re, tika, time
from tika import parser

def split_pdf_pages(root_directory, extract_to_folder):
    for root, dirs, files in os.walk(root_directory):
        for filename in files:
            basename, extension = os.path.splitext(filename)

            if extension == ".pdf":
                fullpath = root + "\" + basename + extension
                pdfFileObj = open(fullpath, "rb")
                pdfReader = PyPDF2.PdfFileReader(pdfFileObj)

                for page in range(0, pdfReader.numPages):
                    print(page)
                    pdfWriter = PyPDF2.PdfFileWriter()
                    pageObj = pdfReader.getPage(page)

                    outputpdf = extract_to_folder + "\" + basename + "-{}.pdf".format(page+1)
                    pdfWriter.addPage(pageObj)

                    with open(outputpdf, "wb") as f:

                        pdfWriter.write(f)

                pdfFileObj.close()

我希望得到名为 filename-1、filename-2.pdf 等的文件,但取而代之的是 filename-1、filename-1-1、filename-2、filename2-2 等,除非它是 range(1, pdfReader.numPages) 它工作正常但跳过了第一页!这让我很生气,请帮忙。

我终于弄明白了(抱歉,我只是一个业余爱好者,所以一开始并不明显!)程序循环遍历目录中的每个 PDF(其中提取并重命名的单页包含文档)。如果将范围更改为 range(1, pdfReader.numPages) 它会忽略所有这些新创建的文档,因为它们都是 1 页长!当它设置为 0 时,它包括所有这些新创建的并复制它们。

我所要做的就是将提取和重命名的文件夹移动到不同的目录。现在我已经完成了,感觉真的很明显!我还删除了 pdfFileObj = open(fullpath, "rb") 因为 reader 显然是自动执行的并且现在一切正常!