StringIO readline() bug??

piet at cs.uu.nl piet at cs.uu.nl
Fri Oct 13 08:08:32 EDT 2000


>>>>> Chris Arai <chris at araidesign.com> (CA) writes:

CA> Hello,
CA> I'm new to python, but I think I have found a bug in StringIO.  In any
CA> case I'm having a problem.

CA> readline() on a StringIO object crashes with an attribute error:
>>>> fstr.readline()
CA> Traceback (innermost last):
CA>   File "<pyshell#37>", line 1, in ?
CA>     fstr.readline()
CA>   File "/usr/lib/python1.6/StringIO.py", line 83, in readline
CA>     i = string.find(self.buf, '\n', self.pos)
CA>   File "/usr/lib/python1.6/string.py", line 171, in find
CA>     return _apply(s.find, args)
CA> AttributeError: find


CA> The history is that:

CA> 1 .  I opened a text file

>>>> file=open("legalfilename",'r')

CA> 2. then I scoop that file's text into a StringIO object:

>>>> fstr=StringIO(file.readlines())

The documentation says that you have to pass it a STRING. However, you are
passing it a string LIST.
Apparently the constructor is not testing it at this moment.

>>>> fstr.readline()     #crashes, with the above message

The readline starts to find in what it supposes to be a string, but which
is actually a list, and a list doesn't have a find method.

So change the constructor call above to:

fstr=StringIO(file.read())
-- 
Piet van Oostrum <piet at cs.uu.nl>
URL: http://www.cs.uu.nl/~piet [PGP]
Private email: P.van.Oostrum at hccnet.nl



More information about the Python-list mailing list