É esta a maneira certa de usar a instrução python "with" em combinação com um bloco try-except ?:
try:
with open("file", "r") as f:
line = f.readline()
except IOError:
<whatever>
Se for, considerando a velha maneira de fazer as coisas:
try:
f = open("file", "r")
line = f.readline()
except IOError:
<whatever>
finally:
f.close()
O principal benefício da instrução "with" aqui é que podemos nos livrar de três linhas de código? Não me parece muito atraente para este caso de uso (embora eu entenda que a instrução "com" tenha outros usos).
EDIT: A funcionalidade dos dois blocos de código acima é idêntica?
EDIT2: As primeiras respostas falam geralmente sobre os benefícios de usar "com", mas parecem ter um benefício marginal aqui. Todos nós temos (ou deveríamos ter chamado) explicitamente f.close () por anos. Suponho que um dos benefícios é que programadores desleixados se beneficiarão com o uso de "com".