python - 在 Python3 中统一替换 Python2 的 StringIO 是什么?
问题描述
文档表明这BytesIO
是新的StringIO
,因为它支持当前相对搜索。
但是,这是不正确的。
BytesIO
不能统一使用,TextIOWrappers
因为它们是通过open()
调用返回的。前者返回字节,后者在读取时返回文本对象。
TextIOWrapper(BytesIO(...))
此外,它不会按预期工作,因为它不支持相对搜索。
那么StringIO
在 python3 中替换 python2 的最佳构造是什么?
解决方案
没有单一的统一替换,因为字符串处理本身在 Python 3 中发生了变化。
Python 3 中内存中文本文件的类是io.StringIO
. 与其他文本文件一样,它不支持当前相对搜索。虽然io.StringIO
理论上可以支持有效的当前相对搜索,但为了与其他文本文件保持一致(并避免限制实现),它拒绝这样做。
Python 3 中内存二进制文件的类是io.BytesIO
. 很有可能这是您应该使用的(如果是,那么您可能也应该以二进制模式打开磁盘文件)。
如果您真的需要 Python 2StringIO.StringIO.seek
在 Python 3 中处理内存中文本文件的灵活性,那么最好的选择可能是编写自己的类。
推荐阅读
- c++ - 创建动态可变参数列表并将其传递给 std::function
- rundeck - rundeck :如何更正rundeck的配置以通过浏览器访问
- selenium - FindElements() 的隐式等待
- spring-boot - 在 Spring Boot 中从 Web 服务获取数据库密码
- javascript - 从可读流显示 PDF -> 无法加载 PDF 文档
- sql - 根据在另一个表中找到的聚合和范围将列添加到表中
- database - 编写查询以按部门名称显示具有最大员工数量顺序的部门名称 - 这是我应该添加什么的问题?
- machine-learning - 多重共线性如何影响模型?
- python - “输入无效。应该是字符串、字符串列表/元组或整数列表/元组。” ValueError:输入无效
- python - 如何找到数据随 pandas 增长的速率?