错误的文件描述符错误

18

如果我尝试执行下面的代码

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

然而,如果我只更改第四行以使用临时文件:

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个回答

37

你仅仅将文件fout以写模式打开,没有以读模式打开。要同时进行读写操作,需进行如下打开方式:

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

1
我不知道事情是否有所改变,但根据当前的文档和我的个人经验,现在需要使用'r+'或'r+b'来打开一个既可读又可写的文件。https://docs.python.org/2/tutorial/inputoutput.html#reading-and-writing-files - JonoCoetzee
@JonoCoetzee 看起来两者的效果相同,但我已经编辑过了,使其更符合文档。谢谢。 - cobbal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接