Can I use cStringIO the same as StringIO?

后端 未结 2 1429
深忆病人
深忆病人 2021-02-07 06:59

I did this:

import cStringIO.StringIO as StringIO

And I realize I\'ve been using it everywhere. Is that fine? Is it treated the same as String

相关标签:
2条回答
  • 2021-02-07 07:38

    They are not the same. cStringIO doesn't correctly handle unicode characters.

    >>> 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)
    
    0 讨论(0)
  • 2021-02-07 07:47

    Nor can you set attributes on a cStringIO.StringIO instance:

    >>> 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'
    

    Several libraries depend on File-like objects having either a name or content_type attribute, so cStringIO.StringIO does not work in these instances.

    0 讨论(0)
提交回复
热议问题