Como "com" é melhor que tentar / capturar para abrir um arquivo em Python?
Entendi que owith
instrução @ ajuda você a ativar isso:
try:
f = open(my_file)
do_stuff_that_fails()
except:
pass
finally:
f.close()
Para dentro
with open(my_file) as f:
do_stuff_that_fails()
Mas como isso é melhor? Você ainda precisa lidar com o caso com o arquivo que não pode ser aberto (como solicitar ao usuário que ele não tem permissões), então, na realidade, você teria:
try:
with open(my_file) as f:
do_stuff_that_fails()
except (IOError, OSError, Failure) as e:
do_stuff_when_it_doesnt_work()
Qual é o equivalente a:
try:
f = open(my_file)
do_stuff_that_fails()
except (IOError, OSError, Faillure) as e:
do_stuff_when_it_doesnt_work()
finally:
f.close()
Sim, você ganhou duas linhas, mas adicionou um nível de aninhamento que não facilita a leitura. O objetivo dowith
declaração para salvar duas linhas ou estou faltando alguma coisa?
Parece muito adicionar uma palavra-chave apenas para isso, então sinto que há algumas sintaxe para lidar com a tentativa adicional / exceto que eu não se