2

PdfFileReader从 pdf 文件中读取内容以创建对象。

我正在通过 cdn 查询 pdf urllib.urlopen(),这为我提供了一个类似对象的文件,它没有搜索。PdfFileReader, 但是使用 seek。

从通过 url 下载的 pdf 创建 PdfFileReader 对象的简单方法是什么。

现在,我能做些什么来避免写入磁盘并通过file().

提前致谢。

4

3 回答 3

1

您可以使用该.read()方法读取文件的全部数据,然后创建自己的 File-like 对象(很可能通过StringIO)来提供对它的访问。

于 2010-04-16T13:04:37.780 回答
1

真的没有一种廉价的、即用型的方法来做到这一点。最简单的方法是读取所有数据并将其放入StringIO对象中。但是,这确实需要您先阅读所有内容,这可能是您想要的,也可能不是。

如果您想要仅在必要时读取的内容,然后存储已读取的内容(或者可能只是已读取的部分内容),那么您将不得不自己编写。对于一些示例,您可能希望查看StringIO模块(或 Python 2.6 中的模块)的源代码。io

于 2010-04-16T13:11:04.463 回答
1

我怀疑您可能在这里过早地进行了优化。

大多数现代系统会在将文件刷新到磁盘之前将它们缓存在内存中很长一段时间,因此如果您将数据写入临时文件,将其读回,然后关闭并删除该文件,您可能会发现没有任何意义磁盘流量(除非它真的是 100MB)。

您可能想查看使用tempfile.TemporaryFile()which 创建一个临时文件,该文件在关闭时自动删除,或者tempfile.SpooledTemporaryFile()明确将其全部保存在内存中,直到超过特定大小。

于 2010-04-16T14:00:10.253 回答