Ошибка неверного дескриптора файла - PullRequest
17 голосов
/ 03 марта 2010

Если я попытаюсь выполнить следующий код

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)

Где 'test' любой произвольный файл, я получаю:

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

Если, однако, я заменю только строку fout на временный файл:

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)

Нет ошибок. Кто-нибудь знает, почему это? Я ожидал, что первый случай сработает, но я, должно быть, делаю что-то не так.

Заранее спасибо за любую помощь!

1 Ответ

36 голосов
/ 03 марта 2010

вы открыли только файл fout для записи, а не для чтения.Чтобы открыть для обоих используйте

fout = file('test.out','r+b')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...