Правильно ли это использовать оператор python с инструкцией в сочетании с блоком 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" здесь, что мы можем избавиться от трех строк кода? Мне кажется, что это не убедительно для меня для этого случая использования (хотя я понимаю, что оператор "с" имеет другие применения).
EDIT: Является ли функциональность этих двух блоков кода одинаковой?
EDIT2: первые несколько ответов говорят в основном о преимуществах использования "с" , но они кажутся здесь предельной выгодой. Мы все были (или должны были) явно называть f.close() годами. Я полагаю, что одно преимущество заключается в том, что неаккуратные кодеры получат выгоду от использования "с" .