除了显而易见的(一个是类型,另一个是类)?什么应该是首选的?也许,在用例中有什么显著的区别?
发布于 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。
前进。继续前进。
发布于 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.BytesIO或io.StringIO,这取决于用例。这与python3向前兼容,并提交到字节或unicode,而不是“两者,也许”。
https://stackoverflow.com/questions/3410309
复制相似问题