2013-11-24 3 views
0

처리와 예외는 파일이 닫혀 제기하고 다시 다음에서 재정의 될 때, 코드의 끝 부분으로 나는 컨텍스트에 빈 출력 파일파이썬 : 나는 코드를 다음 줄 문과 execption이

무엇입니까 반복

with open('output', 'w') as f: 
    try: 
     for i in range(1, 100): 
      if i % 2 == 0: 
       f.write('%d \n' % i) 
      else: 
       raise Exception() 
    except Exception as e: 
     pass 

내 이해가 맞습니까? 그렇다면 왜이 행동이 존재합니까? 예외를 처리하고 있습니다.

with 문은 측면 블록에서 예외가 발생할 때마다 항상 파일을 닫습니다.

with 문을 사용하여 가능한 해결책은 무엇입니까?

+1

내가 묻는대로 혼란 스럽다. 'for' 루프가 왜 예외가 발생했을 때 끝나는 지 묻습니다. –

+1

파일을 덮어 쓰는 이유는 무엇입니까? 그렇다면, 그 대답은'w'가 항상 새로운 파일을 생성한다는 것입니다. –

답변

2

try/except 블록을 사용하는 경우 except 블록이 완료되면 try 블록이 계속되지 않습니다.

가능한 솔루션은 pass 문 대신 현재 의미없는 예외를 발생시키는 raise Exception() 문을 대체하는 것입니다.

사실, when to use exceptions과 관련하여 조금 읽어야 할 것입니다.

+0

오, 그렇습니다. 실수 :) –

관련 문제