이것은 try-except 블록과 함께 파이썬 "with"문을 사용하는 올바른 방법입니까? :
try:
with open("file", "r") as f:
line = f.readline()
except IOError:
<whatever>
그렇다면 이전 작업 방식을 고려하십시오.
try:
f = open("file", "r")
line = f.readline()
except IOError:
<whatever>
finally:
f.close()
세 줄의 코드를 제거 할 수 있다는 "with"문의 주요 이점이 있습니까? 이 사용 사례에 대해서는 그다지 매력적이지 않은 것 같습니다 ( "with"문에 다른 용도가 있음을 이해합니다).
편집 : 위의 두 코드 블록의 기능이 동일합니까?
EDIT2 : 처음 몇 개의 답변은 일반적으로 "with"사용의 이점에 대해 이야기하지만 여기서는 약간의 이점이있는 것 같습니다. 우리는 모두 수년 동안 명시 적으로 f.close ()를 호출 해 왔습니다 (또는 그래야만 했어야합니다). 한 가지 이점은 엉성한 코더가 "with"를 사용하면 도움이된다는 것입니다.