Laszlo Nagy wrote: > This program: > > import sys > import traceback > import cStringIO > > a = 1.0 > b = 0.0 > try: > c=a/b > except: > f = cStringIO.StringIO('') > ei = sys.exc_info() > traceback.print_exception(ei[0],ei[1],ei[2],file=f) > > raises this exception: > > Traceback (most recent call last): > File "C:/Documents and Settings/gandalf/test.py", line 12, in ? > traceback.print_exception(ei[0],ei[1],ei[2],file=f) > File "C:\Python24\Lib\traceback.py", line 124, in print_exception > _print(file, 'Traceback (most recent call last):') > File "C:\Python24\Lib\traceback.py", line 13, in _print > file.write(str+terminator) > AttributeError: 'cStringIO.StringI' object has no attribute 'write' > > What is 'cStringIO.StringI' anyway? Shouldn't it be 'cStringIO.StringIO'? > Nope. StringI is an input-only object, StringO is an output object. You got a StringI because you gave a string argument to the creator.
>>> f1 = cStringIO.StringIO() >>> f1 <cStringIO.StringO object at 0x186c9c00> >>> dir(f1) ['__class__', '__delattr__', '__doc__', '__getattribute__', '__hash__', '__init__', '__iter__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', 'close', 'closed', 'flush', 'getvalue', 'isatty', 'next', 'read', 'readline', 'readlines', 'reset', 'seek', 'softspace', 'tell', 'truncate', 'write', 'writelines'] >>> f2 = cStringIO.StringIO("This is the fixed content of the StringIO") >>> f2 <cStringIO.StringI object at 0x18661440> >>> dir(f2) ['__class__', '__delattr__', '__doc__', '__getattribute__', '__hash__', '__init__', '__iter__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', 'close', 'closed', 'flush', 'getvalue', 'isatty', 'next', 'read', 'readline', 'readlines', 'reset', 'seek', 'tell', 'truncate'] >>> regards Steve -- Steve Holden +44 150 684 7255 +1 800 494 3119 Holden Web LLC/Ltd http://www.holdenweb.com Skype: holdenweb http://holdenweb.blogspot.com Recent Ramblings http://del.icio.us/steve.holden -- http://mail.python.org/mailman/listinfo/python-list