【问题标题】:BytesIO with python v2.5BytesIO 与 python v2.5
【发布时间】:2010-11-19 17:42:32
【问题描述】:

问题:

如何获得与 Python 2.5 的 StringIO 类似的字节流?

应用:

我正在将 PDF 转换为文本,但不想将文件保存到硬盘。

其他想法:

我想我可以使用 StringIO,但没有模式参数(我猜“String”意味着文本模式)。

显然 io.BytesIO 类是 v2.6 中的新类,所以这对我也不起作用。

我有一个使用 tempfile 模块的解决方案,但我想避免对硬盘进行任何读/写操作。

【问题讨论】:

    标签: python stringio bytesio


    【解决方案1】:

    在 Python 2.x 中,“string”表示“字节”,“unicode”表示“字符串”。您应该使用StringIOcStringIO 模块。模式取决于您作为缓冲区参数传入的数据类型。

    【讨论】:

    • 谢谢,我现在感觉有点精神受到挑战。 :-P
    • 如果StringIO做同样的事情,你知道为什么在2.6中有一个单独的BytesIO吗?
    • 前向兼容性 -- 2.6 旨在简化向 3.0 的过渡,因此一些 3.0 功能(例如 io 模块)已被向后移植。
    • 所以from cStringIO import StringIO as BytesIO on from io import BytesIO?
    【解决方案2】:

    如果您使用的是 PDF,那么 StringIO 应该没问题,只要您注意文档:

    StringIO 对象可以接受 Unicode 或 8 位字符串,但混合使用这两者可能需要一些注意。如果两者都使用,则无法解释为 7 位 ASCII(使用第 8 位)的 8 位字符串将导致调用 getvalue() 时引发 UnicodeError。

    请注意,cStringIO不是正确的:

    与 StringIO 模块实现的内存文件不同,该模块提供的内存文件不能接受无法编码为纯 ASCII 字符串的 Unicode 字符串。

    查看完整文档:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-16
      • 2014-01-02
      • 2020-08-27
      • 2021-04-06
      • 2017-09-14
      相关资源
      最近更新 更多