Problem with .next() method adding junk characters.

Rainy ak at silmarill.org
Mon Oct 2 00:50:35 EDT 2006


John Machin wrote:
> Rainy wrote:
> > Hi,
> >
> > I tried searching for this and did not find this issue. I only looked
> > at about dozen hits, I apologize if this is covered somewhere and I
> > missed it. Without much further ado, here's the thing (Win, Py2.5):
> >
> > >>> f = open('test', 'w')
> > >>> f.fileno()
> > 4
> > >>> f.write('1\n')
> > >>> f.write('2\n3\n4\n')
> > >>> f.next()
> >
> > Traceback (most recent call last):
> >   File "<pyshell#8>", line 1, in <module>
> >     f.next()
> > IOError: [Errno 9] Bad file descriptor
>
> This *should* complain that the file is not open for reading. What you
> see is an accidental error. message. When I tried it, I got no error,
> but it printed a few hundred bytes of garbage.
> In both your case and mine, it has also written a load of junk to the
> file!
>
> > >>> f.close()
> > >>> f = open('test')
> > >>> f.next()
> > '1\n'
> > >>> f.next()
> > '2\n'
> > >>> f.next()
> > '3\n'
> > >>> f.next()
> > '4\n'
> > >>> f.next()
> > '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
> > ...many more lines of junk...'
>
> Junk was written to the file earlier.
>
> >
> > I understand that you're not
> > supposed to call .next on a file open for writing.
>
> Indeed. However if you mess up, Python is supposed to give you a
> meaningful error message and not write gibberish to your file.
>
> Please report it as a bug.
> 
> Cheers,
> John

Thanks for the reply, I reported it.. 

 -Rainy




More information about the Python-list mailing list