2010-03-03 3 views
16

나는 다음과 같은 코드 'test'가 임의의 파일입니다나쁜 파일 기술자 오류

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) 

을 실행하려고하면 내가 얻을 : 그러나 경우

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') 
일이 변경되었지만 현재 문서, 내 개인적인 경험에 의하면 때/당신은 지금 'R +'또는 'R + b는'여는 데 사용할 필요가 있다면 나도 몰라
+1

읽기 및 쓰기 모두를위한 파일 https://docs.python.org/2/tutorial/inputoutput.html#reading-and-writing-files – JonoCoetzee

+0

@JonoCoetzee 둘 다 똑같이 작동하는 것으로 보입니다.하지만 더 좋게 편집했습니다. 문서와 정렬. 감사. – cobbal