tags:

views:

103

answers:

1

If I try executing the following code

f = file('test','rb')
fout = file('test.out','wb')

for i in range(10):
    a = f.read(1)
    fout.write(a)

f.close()
f = fout
f.seek(4)

print f.read(4)

Where 'test' is any arbitrary file, I get:

Traceback (most recent call last):
  File "testbad.py", line 12, in <module>
    print f.read(4)
IOError: [Errno 9] Bad file descriptor

If however, I change just the fout line to use a temporary file:

import tempfile

f = file('test','rb')
fout = tempfile.NamedTemporaryFile()

for i in range(10):
    a = f.read(1)
    fout.write(a)

f.close()
f = fout
f.seek(4)

print f.read(4)

There are no errors. Does anyone know why this is? I would have expected the first case to work, but I must be doing something wrong.

Thanks in advance for any help!

+7  A: 

you've only opened the file fout for writing, not reading. To open for both use

fout = file('test.out','w+b')
cobbal