Является ли это правильным способом использовать оператор python «with» в сочетании с блоком try-exc?:
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()
Является ли основным преимуществом утверждения «с» здесь то, что мы можем избавиться от трех строк кода? Мне не кажется убедительным для этого варианта использования (хотя я понимаю, что оператор "с" имеет и другие применения).
РЕДАКТИРОВАТЬ: идентичны ли функциональность вышеупомянутых двух блоков кода?
РЕДАКТИРОВАТЬ2: Первые несколько ответов обычно говорят о преимуществах использования «с», но здесь они кажутся незначительными. Мы все (или должны были) явно вызывать f.close () в течение многих лет. Полагаю, одно преимущество заключается в том, что неаккуратные кодировщики выиграют от использования «с».