1

问题:

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

应用:

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

其他想法:

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

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

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

4

2 回答 2

4

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

于 2009-08-14T17:55:49.247 回答
2

如果您使用的是 PDF,那么StringIO只要您注意文档就可以了:

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

请注意,这不适用于cStringIO

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

请参阅以下位置的完整文档:

于 2009-08-14T17:58:23.390 回答