Trouble with file.seek/file.tell on Win32?

  • Thread starter Prabhu Ramachandran
  • Start date
P

Prabhu Ramachandran

Hi,

I noticed peculiar behavior under Python-2.3.4 under Win32. When I
run something like this:

f = open('t.txt', 'wb')
f.write('1\012'+'2\012'+'3\012')
f.close()
f = open('t.txt', 'r')
f.readline()
pos = f.tell()
val = f.read(1)
f.seek(pos)
assert val == f.read(1)

I get an assertion error at this point. Everything works fine if I
read the file with 'rb' instead of 'r'. But I can almost swear that
this used to work earlier. I suspect that this behavior arises due to
recent changes in fileobject.c (specifically, v2.187) where universal
newline support was removed.

http://cvs.sf.net/viewcvs.py/python/python/dist/src/Objects/fileobject.c?rev=2.192&view=log

Could someone please clarify if this is this a bug or not? I would
like to think that using tell and seek should work reliably enough for
text files.

The reason this is important for me is that I've been generating text
files (with gay abandon) for MayaVi (http://mayavi.sf.net) for three
years now. I always open the file using 'r'/'w' and not 'rb'/'wb'.
Everything used to work fine. It never mattered where and how exactly
the files were generated. Now, I get strange errors since I can no
longer seek into these files reliably. I could switch to using
'rb'/'wb' universally but all existing files will no longer work
without either requiring a fair bit of effort on my part or on the
part of users changing their saved files. I am loathe to ask every
user to change all their files and change the newlines.

Thanks.

cheers,
prabhu

p.s. Please CC me in on replies. I'm not tracking c.l.py. Thanks.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,766
Messages
2,569,569
Members
45,042
Latest member
icassiem

Latest Threads

Top