"ValueError: seek of closed file Working on PyPDF2 and getting this" --> "ValueError: 工作在PyPDF2并收到此文件"

2024-04-24 03:54:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从pdf文件中获取文本。代码如下:

from PyPDF2 import PdfFileReader
with open('HTTP_Book.pdf', 'rb') as file:
    pdf = PdfFileReader(file)

page = pdf.getPage(1)
#print(dir(page))
print(page.extractText())

这给了我错误

^{pr2}$

我只需将代码放在with语句下,就可以正常工作了。我的问题是:为什么会这样?我已经将信息存储在“pdf”对象中,因此我应该能够在块外访问它。在


Tags: 文件代码from文本importhttppdfwith
1条回答
网友
1楼 · 发布于 2024-04-24 03:54:28

^{}需要一个可查找的、开放的、蒸汽。它不会将整个文件加载到内存中,因此您必须保持打开状态才能运行方法,如^{}。你认为创建一个读卡器会自动读取整个文件的假设是不正确的。在

^{}语句对context manager进行操作,例如文件。当with结束时,将调用上下文管理器的__exit__方法。在本例中,它关闭PdfFildReader试图用来获取第二页的文件句柄。在

正如您所发现的,正确的步骤是在关闭文件之前从PDF中读取必须的内容。如果且仅当您的程序需要打开PDF文件直到最后,您可以将文件名直接传递给PdfFileReader。但是,在此之后没有(有文档记录的)关闭文件的方法,因此我建议您使用原始方法:

from PyPDF2 import PdfFileReader
with open('HTTP_Book.pdf', 'rb') as file:
    pdf = PdfFileReader(file)
    page = pdf.getPage(1)
    print(page.extractText())
# file is closed here, pdf will no longer do its job

相关问题 更多 >