1
resposta

Por que não usamos o with?

O uso do bloco with não poderia evitar o uso da função close()? Foi para algum fim didático dessa vez?

Na prática de programação, o bloco with substituirá arquivo = open(...) e arquivo.close() em quais exemplos?

É no caso que nós precisarmos usar o arquivo.flush() ao invés de arquivo.close() por exemplo?

1 resposta

Essa é uma ótima pergunta.

O comando with open(...) seria como deixar o arquivo aberto no windows/linux/pc, se vc quiser apagar/editar não vai conseguir, fora isso, deixa-lo aberto fará consumir mais processamento e aumentaria o tempo de processamento (algo em torno de 5x mais tempo de processamento).

Isso pode ser prejudicial em algumas ocasiões como programação em embarcados (raspberry, bananapi, atmega, etc).

Mas existe uma vantagem dessa forma, não é apenas para abrir arquivos de texto, vc pode abrir qualquer tipo de arquivo.

Logo, a melhor ambiente para usar o with open(...) as f seria em um computador do tipo desktop com memoria RAM boa (min.: 2GB, recomendado: 4GB) e caso não seja necessário alterar/remover o arquivo aberto.

https://stackoverflow.com/questions/31334061/file-read-using-open-vs-with-open#:~:text=When%20you%20use%20with%20statement,automatically%20close%20it%20for%20you.&text=This%20PEP%20adds%20a%20new,uses%20of%20try%2Ffinally%20statements.

Por fim, particularmente quando eu trabalho com o arquivo todo no código, se eu uso o with o código todo fica identado e eu mesmo me atrapalho pra fazer manutenção/melhoria. Se eu uso o arquivo = open(...) qualquer pessoa que abrir consegue sem muita dificuldade alterar o código.