File read-write mode: problem appending after reading

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Frederic Rentsch

    #1

    File read-write mode: problem appending after reading

    Hi all,

    Working with read and write operations on a file I stumbled on a
    complication when writes fail following a read to the end.
    >>f = file ('T:/z', 'r+b')
    >>f.write ('abcdefg')
    >>f.tell ()
    30L
    >>f.seek (0)
    >>f.read ()
    'abcdefg'
    >>f.flush () # Calling or not makes no difference
    >>f.write ('abcdefg')
    Traceback (most recent call last):
    File "<pyshell#6 2>", line 1, in -toplevel-
    f.write ('abcdefg')
    IOError: (0, 'Error')

    Flushing doesn't help. I found two work arounds:
    >>f.read ()
    'abcdefg'
    >>f.read () # Workaround 1: A second read (returning an empty string)
    ''
    >>f.write ('abcdefg')
    (No error)
    >>f.read ()
    'abcdefg'
    >>f.seek (f.tell ()) # Workaround 2: Setting the cursor (to where
    it is!)
    >>f.write ('abcdefg')
    (No error)

    I found no problem with writing into the file. So it looks like it has
    to do with the cursor which a read puts past the end, unless it is past
    the end, in which case it goes back to the end. Is there a less kludgy
    alternative to "fseek (ftell ())"?

    Frederic

Working...