可以像使用StringIO一样使用cStringIO吗?
我做了这个:
import cStringIO.StringIO as StringIO
然后我发现我到处都在用它。这没问题吧?它和StringIO的处理方式一样吗?
2 个回答
6
你也不能在 cStringIO.StringIO 的实例上设置属性:
>>> from cStringIO import StringIO
>>> s = StringIO()
>>> s.name = 'myfile'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'cStringIO.StringO' object has no attribute 'name'
有一些库需要文件类对象具备 name
或 content_type
这样的属性,所以在这些情况下,cStringIO.StringIO 就不能用了。
25
它们不是一样的。cStringIO
不能正确处理 Unicode 字符。
>>> StringIO.StringIO().write(u'\u0080')
>>> cStringIO.StringIO().write(u'\u0080')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\x80' in position 0: ordinal not in range(128)