[ python-Bugs-1569057 ] Using .next() on file open in write mode writes junk to file

SourceForge.net noreply at sourceforge.net
Wed Oct 4 03:23:30 CEST 2006


Bugs item #1569057, was opened at 2006-10-01 23:49
Message generated for change (Comment added) made by rainy
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1569057&group_id=5470

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
>Category: Documentation
Group: Python 2.5
Status: Open
Resolution: None
Priority: 5
Submitted By: andrei kulakov (rainy)
Assigned to: Nobody/Anonymous (nobody)
Summary: Using .next() on file open in write mode writes junk to file

Initial Comment:
When you open a file in write mode and use .next(), it 
prints an error and writes many lines of junk to file. 
I tested on windows and python 2.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 

>>> 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\x
00\x00\x00\x00\x00\x­
00\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...'



----------------------------------------------------------------------

>Comment By: andrei kulakov (rainy)
Date: 2006-10-03 20:23

Message:
Logged In: YES 
user_id=511010

Python newsgroup folks said that this is normal because when 
switching between write/read modes without doing flush() 
first, result is undefined. There was a suggestion from 
Terry Ready to add this to documentation on file methods:

"When switching from reading or writing (or vice versa), 
call flush(), or 
the result will be undefined."

thx, -andrei

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1569057&group_id=5470


More information about the Python-bugs-list mailing list