BytesIO 与 python v2.5

发布于 2024-08-02 03:09:03 字数 325 浏览 5 评论 0原文

问题

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

应用程序

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

其他想法:

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

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

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

Question:

How do I get a byte stream that works like StringIO for Python 2.5?

Application:

I'm converting a PDF to text, but don't want to save a file to the hard disk.

Other Thoughts:

I figured I could use StringIO, but there's no mode parameter (I guess "String" implies text mode).

Apparently the io.BytesIO class is new in v2.6, so that doesn't work for me either.

I've got a solution with the tempfile module, but I'd like to avoid any reads/writes to/from the hard disk.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

薄荷港 2024-08-09 03:09:03

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

In Python 2.x, "string" means "bytes", and "unicode" means "string". You should use the StringIO or cStringIO modules. The mode will depend on which kind of data you pass in as the buffer parameter.

我做我的改变 2024-08-09 03:09:03

如果您正在使用 PDF,那么只要您留意文档,StringIO 就应该没问题:

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

请注意,对于 cStringIO 来说,这是的情况:

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

请参阅完整文档:

If you're working with PDF, then StringIO should be fine as long as you pay heed to the docs:

The StringIO object can accept either Unicode or 8-bit strings, but mixing the two may take some care. If both are used, 8-bit strings that cannot be interpreted as 7-bit ASCII (that use the 8th bit) will cause a UnicodeError to be raised when getvalue() is called.

Note this is not true for cStringIO:

Unlike the memory files implemented by the StringIO module, those provided by this module are not able to accept Unicode strings that cannot be encoded as plain ASCII strings.

See the full documentation at:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文