StringIO in 2.6 and beyond

Bill McClain 20080915.20.wmcclain at spamgourmet.com
Tue Dec 9 11:28:40 EST 2008


On 2008-12-08, Bill McClain <20080915.20.wmcclain at spamgourmet.com> wrote:
> On 2008-12-08, Christian Heimes <lists at cheimes.de> wrote:

> > In this context 'str' means Python 3.0's str type, which is unicode in 
> > 2.x. Please report the misleading error message.

> So this is an encoding problem? Can you give me a hint on how to correct in my
> example? I see that io.StringIO() has an encoding parameter, but I'm unclear
> what to specify.

I still don't have this working. I've been specifying encodings without
success.

The StringIO example usage in the Python 3.0 documentation here:

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

gives me the same error on 2.6:

    #! /usr/bin/env python

    from __future__ import print_function
    import io

    output = io.StringIO()
    output.write('First line.\n')
    print('Second line.', file=output)

    # Retrieve file contents -- this will be
    # 'First line.\nSecond line.\n'
    contents = output.getvalue()

    # Close object and discard memory buffer --
    # .getvalue() will now raise an exception.
    output.close()

./stringio30.py
Traceback (most recent call last):
  File "./stringio30.py", line 7, in <module>
    output.write('First line.\n')
  File "/usr/local/lib/python2.6/io.py", line 1487, in write
    s.__class__.__name__)
TypeError: can't write str to text stream

-Bill
-- 
Sattre Press                              History of Astronomy 
http://sattre-press.com/               During the 19th Century
info at sattre-press.com                       by Agnes M. Clerke
                              http://sattre-press.com/han.html



More information about the Python-list mailing list