Para que serve o with no Python? como utilizar?
Neste artigo vamos ver para que serve o with no Python, uma instrução que é utilizada para deixar o código mais limpo e legível.

Fala programador(a), beleza? Bora aprender mais sobre Python!
A instrução with é utilizada para garantir a finalização de recursos adquiridos.
Por exemplo: quando um arquivo é aberto, podemos utilizar try e finally, para fazer a execução da nossa lógica e depois fechar o arquivo
Porém alguns erros de código poderiam resultar em uma não execução da instrução de fechar o arquivo, fazendo com que os recursos ainda ficassem alocados a ele
Formação Claude Code
Domine Claude Code do absoluto zero até o avançado
- 116 aulas
- 4 projetos
- 9h 23min
Por isso, foi providenciada a instrução with, que realiza esta mesma operação de forma simples, que garante o encerramento dos recursos alocados
Vejamos na prática a comparação das duas ideias:
# com try e finally
try:
f = open("teste.txt", "w")
f.write("Testando escrita")
finally:
f.close()
# com with
with open("teste2.txt", "w") as f:
f.write("Testando escrita com with")
Veja que com with utilizamos menos linhas, ou seja, código pythonico
Além disso garantimos que os recursos para abrir o arquivo sejam retornados a máquina
A versão com with torna desnecessário justamente o f.close() por causa disso, ao fim da instrução o arquivo será fechado
Conclusão
Neste artigo vimos para que serve o with no Python
A instrução nos vai poupar código, perceba que não precisamos mais fechar os arquivos
E ela justamente atua nesse sentido, de simplificar as coisas e retornar os recursos alocados com certeza a máquina
Nos prevenindo de eventuais erros de lógica ou do programa
Confira também nosso catálogo de cursos gratuitos, com aulas semanais no YouTube
Dá pra abrir mais de um arquivo com with?
Dá sim, e sem precisar aninhar um with dentro do outro
Você separa os recursos por vírgula na mesma linha e o Python fecha todos quando o bloco termina
with open("entrada.txt", "r") as origem, open("saida.txt", "w") as destino:
conteudo = origem.read()
destino.write(conteudo)
Os dois arquivos são encerrados sozinhos ao fim do bloco, mesmo que role algum erro no meio
Bem mais limpo que abrir, tratar e fechar cada um na mão, né?
O que o with faz por trás? (context manager)
Aqui vem o porquê da coisa
O with trabalha com o que a gente chama de context manager
Todo objeto que funciona com with tem dois métodos: um que roda ao entrar no bloco (__enter__) e outro que roda ao sair (__exit__)
‘E o que isso muda pra mim?’ Muda que a limpeza, fechar o arquivo, liberar o recurso, fica garantida na saída, deu erro ou não deu
Por isso o with não serve só pra arquivo: conexão de banco, trava de thread e várias outras coisas usam esse mesmo padrão
Perguntas frequentes sobre o with
O with substitui o try e finally?
Na prática de fechar recursos, sim
O with já garante o encerramento pra você, então some aquele finally só pra dar f.close()
Preciso usar with só com arquivos?
Não
Arquivo é o caso mais comum de aprender, mas qualquer objeto que seja um context manager funciona com with
E se der erro dentro do bloco with?
O recurso é fechado do mesmo jeito
É exatamente pra isso que ele existe: garantir a limpeza mesmo quando algo quebra no meio do caminho
Leia também
Formações
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Blog | Mais populares

Como limitar números decimais em Python?
Adicionar uma seção sobre f-strings, o jeito mais usado hoje pra formatar casa decimal. Exemplo: valor = 3.14159 e print(f"{valor:.2f}") mostrando 3.14. Explicar que o […]
Como programar Python [dicas e códigos iniciantes aqui]
Python é uma linguagem de programação muito popular e uma de alto nível utilizada em diferentes tipos de aplicações, como para o desenvolvimento web, em Machine […]

Como inverter uma string em Python
Neste artigo você vai aprender a como inverter uma string em Python, de uma maneira simples para você utilizar em seus programas Conteúdo também disponível […]
