Python 为什么可以';我使用切片表示法来使用pyPDF迭代页面
我正在运行以下代码来创建一个新的PDF文件,其中包含除源PDF的第一页以外的所有内容:Python 为什么可以';我使用切片表示法来使用pyPDF迭代页面,python,python-2.7,slice,pypdf,Python,Python 2.7,Slice,Pypdf,我正在运行以下代码来创建一个新的PDF文件,其中包含除源PDF的第一页以外的所有内容: import os from pyPdf import PdfFileReader, PdfFileWriter inputFile = PdfFileReader(file("/path/to/file", "rb")) outputPDF = PdfFileWriter() for page in inputFile.pages[1:]: outputPDF.addPage(page) outp
import os
from pyPdf import PdfFileReader, PdfFileWriter
inputFile = PdfFileReader(file("/path/to/file", "rb"))
outputPDF = PdfFileWriter()
for page in inputFile.pages[1:]:
outputPDF.addPage(page)
outputFile = open("/path/to/output/file", "wb")
outputPDF.write(outputFile)
outputFile.close()
当我尝试运行此程序(Python 2.7.6)时,会引发以下异常:
for page in inputFile.pages[1:]:
TypeError: sequence indices must be integers
如果我停止使用切片表示法,只对inputFile.pages:中的页面使用,我不会得到任何异常
我是做错了什么,还是仅仅是pyPdf库中的一个bug?显然,他们没有设置\uuuu getitem\uuuu
方法来处理切片——只处理整数。在您的情况下,您可以使用itertools.islice
获得包含所需页面的iterable。很好!我在尝试自学Python时使用了这个库,所以尽管我觉得这是实现中的一个问题,但我对它没有信心。我不知道itertools,我会查一查。谢谢看看,我们可以看到它们只支持整数。这有点问题(我认为他们至少应该支持long
。以一种干净的方式添加对切片的支持并不那么明显——尽管我相信这是可以解决的……我刚刚尝试了“itertools.islice”选项,效果非常好!FWIW,我刚刚添加了一个用于将切片添加到inputFile.pages
。