2010-03-03 180 views
16

如果我尝试执行以下代码错误的文件描述符错误

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) 

没有错误。有人知道为什么吗?我希望第一个案例能够奏效,但我一定在做错事。

在此先感谢您的帮助!

回答

33

您只打开文件fout进行书写,而不是阅读。要打开都使用

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

我不知道,如果/当事情发生了变化,但根据当前的文档,以及我个人的经验,你现在需要使用“R +”或“R + B”打开文件的阅读和写作https://docs.python.org/2/tutorial/inputoutput.html#reading-and-writing-files – JonoCoetzee 2015-07-17 09:35:10

+0

@JonoCoetzee看来,这两个工作等效,但我已经编辑它是更好与文档保持一致。谢谢。 – cobbal 2015-07-18 04:46:36

相关问题