Czy to właściwy sposób używania instrukcji Pythona „with” w połączeniu z blokiem try-except ?:
try:
with open("file", "r") as f:
line = f.readline()
except IOError:
<whatever>
Jeśli tak, to rozważ stary sposób robienia rzeczy:
try:
f = open("file", "r")
line = f.readline()
except IOError:
<whatever>
finally:
f.close()
Czy główną zaletą instrukcji „with” jest to, że możemy pozbyć się trzech wierszy kodu? Nie wydaje mi się to zbyt ważne w tym przypadku użycia (chociaż rozumiem, że instrukcja „with” ma inne zastosowania).
EDYCJA: Czy funkcjonalność powyższych dwóch bloków kodu jest identyczna?
EDYCJA2: Kilka pierwszych odpowiedzi mówi ogólnie o korzyściach wynikających z używania „z”, ale wydaje się, że mają one marginalne korzyści. Od lat wszyscy (lub powinniśmy) otwarcie wywoływać funkcję f.close (). Przypuszczam, że jedną z korzyści jest to, że niechlujni programiści skorzystają na używaniu „z”.