代码之家  ›  专栏  ›  技术社区  ›  lprsd

向filetype对象添加seek的廉价方法

  •  2
  • lprsd  · 技术社区  · 15 年前

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

    我正在通过cdn查询pdf urllib.urlopen() PDF阅读器 ,但是使用seek。

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

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

    3 回复  |  直到 15 年前
        1
  •  1
  •   Thomas Wouters    15 年前

    没有一种便宜的现成的方法可以做到这一点。最简单的方法是读取所有数据并将其放入 StringIO 对象。然而,这确实需要你先阅读所有的东西,这些东西可能是你想要的,也可能不是你想要的。

    如果你想要一些只在必要的时候读的东西,然后存储所读的内容(或者可能只是所读内容的一部分),那么你就必须自己写。您可能想查看 斯特林吉奥 io 模块,在python2.6中)获取一些示例。

        2
  •  1
  •   Amber    15 年前

    你可以用这个 .read() 方法读入文件的整个数据,然后创建自己的类似文件的对象(很可能是通过 StringIO

        3
  •  1
  •   Duncan    15 年前

    我怀疑你在这里可能过于乐观了。

    你可以考虑使用 tempfile.TemporaryFile() tempfile.SpooledTemporaryFile() 它在内存中显式地保存它,直到它超过一个特定的大小。