首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python2.7中的StringIO和io.StringIO有什么不同?

Python2.7中的StringIO和io.StringIO有什么不同?
EN

Stack Overflow用户
提问于 2010-08-05 06:18:47
回答 2查看 18.5K关注 0票数 30

除了显而易见的(一个是类型,另一个是类)?什么应该是首选的?也许,在用例中有什么显著的区别?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-05 06:44:02

http://docs.python.org/library/io.html#io.StringIO

http://docs.python.org/library/stringio.html

我看到了这个。

用于unicode文本的内存中的流。它继承了TextIOWrapper。

此模块实现了一个类似文件的类StringIO,它读取和写入字符串缓冲区(也称为内存文件)。

io.StringIO是一个类。它处理Unicode。它反映了首选的Python 3库结构。

StringIO.StringIO是一个类。它处理字符串。它反映了遗留的Python 2库结构。

什么应该是首选的?

始终朝着新的库组织前进。应该使用io.open替换内置的不支持Unicode的open

前进。继续前进。

票数 32
EN

Stack Overflow用户

发布于 2018-04-12 19:23:26

在python 2.7和3中:

io.BytesIO是一个类似于open(filename, "wb")的内存中类似文件的对象,它不会对换行符进行任何更改。它处理bytes()字符串,在py2.7中它是str别名。

open(filename, "w")类似,io.StringIO是一个类似于内存中的文件对象,可以对换行符进行更改。它处理unicode()字符串,在py3.x中,它是str别名。

Py2.7的旧StringIO.StringIO是一个类似于open(filename, "w")的内存中的类似文件的对象,它不会修改换行符。它处理unicode()bytes()的方式与大多数过时的Python2字符串方法相同:允许您正确地混合它们,但前提是您够幸运。

因此,Py2.7的旧StringIO.StringIO类实际上更类似于io.BytesIO,而不是io.StringIO,因为它是按照bytes()/str()操作的,并且不进行换行符转换。

什么应该是首选的?

不要使用StringIO.StringIO,取而代之的是使用io.BytesIOio.StringIO,这取决于用例。这与python3向前兼容,并提交到字节或unicode,而不是“两者,也许”。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3410309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档