StringIO 替换可以使用字节而不是字符串吗?
python StringIO
类是否有任何替代品,可以使用 bytes
而不是字符串?
这可能并不明显,但如果您使用 StringIO 来处理二进制数据,那么您对 Python 2.7 或更高版本就不那么幸运了。
Is there any replacement for python StringIO
class, one that will work with bytes
instead of strings?
It may not be obvious but if you used StringIO for processing binary data you are out of luck with Python 2.7 or newer.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
尝试
io.BytesIO
。正如其他有 指出,你确实可以在 2.7 中使用
StringIO
,但是BytesIO
是向前兼容的一个不错的选择。Try
io.BytesIO
.As others have pointed out, you can indeed use
StringIO
in 2.7, butBytesIO
is a good choice for forward-compatibility.在 Python 2.6/2.7 中, io 模块旨在与 Python 3.X 兼容。来自文档:
在 3.X 之前的 Python 版本中, StringIO 模块包含 StringIO 的旧版本,与 io.StringIO 不同,它可以在 Python 2.6 之前的版本中使用:
In Python 2.6/2.7, the io module is intended to be used for compatibility with Python 3.X. From the docs:
In Python versions earlier than 3.X the StringIO module contains the legacy version of StringIO, which unlike
io.StringIO
can be used in pre-2.6 versions of Python:你说:“这可能并不明显,但如果你使用 StringIO 来处理二进制数据,那么你对 Python 2.7 或更高版本就不那么幸运了”。
这并不明显,因为它不是真的。
如果您的代码可以在 2.6 或更早版本上运行,那么它也可以在 2.7 上继续运行。未编辑的屏幕转储(Windows 命令提示符窗口在第 80 列及所有位置换行):
如果您需要编写在 2.7 和 3.x 上运行的代码,请使用
中的 BytesIO
类io 模块。如果您需要/想要一个支持 2.7、2.6、... 和 3.x 的单一代码库,您将需要更加努力。 使用six 模块应该有很大帮助。
You say: "It may not be obvious but if you used StringIO for processing binary data you are out of luck with Python 2.7 or newer".
It is not obvious because it is not true.
If you have code that works on 2.6 or earlier, it continues to work on 2.7. Unedited screen dump (Windows Command prompt window wrapping at col 80 and all):
If you need to write code that runs on 2.7 and 3.x, use the
BytesIO
class in theio
module.If you need/want a single codebase that supports 2.7, 2.6, ... and 3.x, you will need to work a bit harder. Using the six module should help a lot.