Escrevendo em arquivos
Veja como criar ou alterar arquivos usando Python.
Na lição anterior, você aprendeu a ler informações de um arquivo. Agora chegou a vez de aprender a escrever — ou seja, criar arquivos e salvar dados dentro deles.
Pense assim: o programa pode não só ler um caderno de anotações, mas também escrever novas páginas nele. Isso permite salvar resultados, guardar histórico de ações e criar arquivos que o usuário pode consultar depois.
Os modos de escrita: "w" e "a"
Assim como no modo de leitura usamos "r", para escrever em arquivos usamos outros dois modos:
| Modo | Nome | O que faz |
|---|---|---|
"w" |
write | Cria o arquivo (ou apaga o conteúdo se já existir) e abre para escrita |
"a" |
append | Abre o arquivo para adicionar conteúdo ao final, sem apagar o que já existe |
Atenção: O modo
"w"é destrutivo — se o arquivo já existir, todo o conteúdo anterior é apagado antes de você escrever. Use-o com cuidado!
Escrevendo com o modo "w"
arquivo = open("mensagem.txt", "w", encoding="utf-8")
arquivo.write("Olá! Este é meu primeiro arquivo criado com Python.\n")
arquivo.write("Python é incrível!\n")
arquivo.close()
Após a execução, o arquivo mensagem.txt será criado com o seguinte conteúdo:
Olá! Este é meu primeiro arquivo criado com Python.
Python é incrível!
Repare no \n ao final de cada string. Assim como no terminal, \n representa uma quebra de linha. Sem ele, todo o texto seria escrito em uma linha só.
Se você executar esse código novamente, o arquivo será sobrescrito do zero — o conteúdo anterior desaparece.
Adicionando conteúdo com o modo "a"
Para adicionar texto ao final de um arquivo sem apagar o que já existe, use o modo "a" (append):
arquivo = open("mensagem.txt", "a", encoding="utf-8")
arquivo.write("Esta linha foi adicionada depois!\n")
arquivo.close()
Agora o arquivo mensagem.txt terá:
Olá! Este é meu primeiro arquivo criado com Python.
Python é incrível!
Esta linha foi adicionada depois!
O modo "a" é ideal para registros e históricos: cada vez que o programa roda, ele adiciona uma nova linha sem destruir o que já estava salvo.
Escrevendo várias linhas com writelines()
Além do write(), existe o writelines(), que recebe uma lista de strings e escreve todas de uma vez:
compras = [
"arroz\n",
"feijão\n",
"macarrão\n",
"azeite\n"
]
arquivo = open("compras.txt", "w", encoding="utf-8")
arquivo.writelines(compras)
arquivo.close()
Arquivo gerado:
arroz
feijão
macarrão
azeite
O
writelines()não adiciona quebra de linha automaticamente entre os itens — você mesmo precisa incluir o\nem cada string da lista.
Você poderia obter o mesmo resultado com um for e o método write(). O writelines() é uma forma mais prática de escrever tudo de uma vez.
O modo "w" cria o arquivo se ele não existir
Uma vantagem do modo "w" (e do "a" também) é que, se o arquivo não existir, o Python cria automaticamente. Você não precisa criar o arquivo antes de escrever nele — diferente do modo "r", que exige que o arquivo já exista.
# O arquivo "novo_diario.txt" não existe ainda, mas isso não é problema
arquivo = open("novo_diario.txt", "w", encoding="utf-8")
arquivo.write("Primeira entrada do diário.\n")
arquivo.close()
# O arquivo foi criado com o conteúdo acima!
Exemplo prático: salvando um registro de acessos
Vamos criar um programa que registra cada vez que é executado, salvando a data e horário em um arquivo de log:
from datetime import datetime # módulo do Python para trabalhar com datas e horas
def registrar_acesso(nome_arquivo):
agora = datetime.now() # obtem data e hora atuais
horario = agora.strftime("%d/%m/%Y %H:%M:%S") # formata a data e hora
mensagem = f"Acesso registrado em: {horario}\n"
arquivo = open(nome_arquivo, "a", encoding="utf-8")
arquivo.write(mensagem)
arquivo.close()
print(f"Registro salvo: {mensagem.strip()}")
# Programa principal
registrar_acesso("acessos.txt")
Cada vez que você executar o programa, uma nova linha será adicionada ao arquivo acessos.txt. Após três execuções, o arquivo terá algo como:
Acesso registrado em: 28/06/2026 14:30:01
Acesso registrado em: 28/06/2026 16:45:22
Acesso registrado em: 29/06/2026 09:10:58
O
datetimeé um módulo do Python para trabalhar com datas e horários. A linhafrom datetime import datetimeimporta apenas a parte que precisamos dele — você verá mais sobre importações em lições futuras. Por enquanto, basta saber quedatetime.now()retorna a data e hora atual, e.strftime(...)formata esse valor como texto.
Exemplo prático: salvando resultados de um programa
Vamos ver outro exemplo: um programa que calcula e salva o resultado de operações matemáticas em um arquivo:
def salvar_resultado(operacao, resultado, nome_arquivo):
linha = f"{operacao} = {resultado}\n"
arquivo = open(nome_arquivo, "a", encoding="utf-8")
arquivo.write(linha)
arquivo.close()
def somar(a, b):
return a + b
def multiplicar(a, b):
return a * b
# Programa principal
arquivo_resultados = "resultados.txt"
resultado1 = somar(10, 5)
salvar_resultado("10 + 5", resultado1, arquivo_resultados)
resultado2 = multiplicar(4, 7)
salvar_resultado("4 * 7", resultado2, arquivo_resultados)
resultado3 = somar(resultado1, resultado2)
salvar_resultado(f"{resultado1} + {resultado2}", resultado3, arquivo_resultados)
print("Resultados salvos no arquivo!")
Conteúdo do arquivo resultados.txt após a execução:
10 + 5 = 15
4 * 7 = 28
15 + 28 = 43
O que aprendemos nesta lição
Nesta lição, você aprendeu que:
- O modo
"w"(write) abre o arquivo para escrita — apaga o conteúdo anterior se o arquivo já existir, ou cria um novo. - O modo
"a"(append) adiciona conteúdo ao final do arquivo, sem apagar o que já estava lá. - O método
write()escreve uma string no arquivo — use\npara criar quebras de linha. - O método
writelines()escreve uma lista de strings de uma vez, mas não adiciona\nautomaticamente. - Tanto
"w"quanto"a"criam o arquivo automaticamente se ele não existir. - Sempre use
close()ao terminar — ou, melhor ainda, owith open()que você verá na próxima lição!