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 \n em 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 linha from datetime import datetime importa apenas a parte que precisamos dele — você verá mais sobre importações em lições futuras. Por enquanto, basta saber que datetime.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 \n para criar quebras de linha.
  • O método writelines() escreve uma lista de strings de uma vez, mas não adiciona \n automaticamente.
  • Tanto "w" quanto "a" criam o arquivo automaticamente se ele não existir.
  • Sempre use close() ao terminar — ou, melhor ainda, o with open() que você verá na próxima lição!