Это правильный способ использования оператора python "with" в сочетании с блоком try-except ?:
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".