Ao trabalhar com arquivos em Python, é bastante comum invocar explicitamente o método close() após processar o arquivo. Isso pode funcionar bem em muitos casos, mas é uma armadilha comum para iniciantes e desenvolvedores vindos de outras linguagens.


Se uma exceção for lançada antes de chamar o método close(), o arquivo permanecerá aberto. Nesse cenário, o código pararia de ser executado antes que close() fosse chamada, deixando o arquivo aberto após o travamento do programa.


f = open('nome_do_arquivo', 'w')

f.write('Ola eu sou o joão!')

f.close()


Uma maneira de mitigar esse problema é envolver a chamada write() em uma instrução try. Dessa forma, você pode lidar com quaisquer exceções e finalmente usá-lo para garantir que o arquivo seja fechado.


f = open('nome_do_arquivo', 'w')

try:

  f.write('Ola eu sou o João!')

finally:

  f.close()


Outra opção oferecida pelo Python é usar uma instrução with que garantirá que o arquivo seja fechado quando o código que o usa terminar de ser executado. Isso vale mesmo se uma exceção for lançada.


with open('nome do arquivo', 'w') as f:

  f.write('Ola eu sou o João!')