Médio Python

Escrever e anexar em arquivo

Enunciado

Crie um programa que escreva a frase "Primeira linha.\n" em um arquivo chamado log.txt (sobrescrevendo qualquer conteúdo anterior). Depois, abra o mesmo arquivo no modo anexação e adicione a frase "Segunda linha.\n". Por fim, leia e imprima todo o conteúdo do arquivo.

Requisitos

  • Use with e encoding='utf-8' em todas as operações.
  • A primeira escrita deve usar o modo 'w'.
  • A segunda escrita deve usar o modo 'a'.
  • O conteúdo final impresso deve conter as duas linhas na ordem correta.

Código inicial

# Seu código aqui

Saída esperada

Primeira linha.
Segunda linha.
Ver dica

Lembre-se de incluir \n ao final de cada frase para que fiquem em linhas separadas.

Mostrar solução
# Escreve a primeira linha (sobrescreve o arquivo)
with open('log.txt', 'w', encoding='utf-8') as f:
    f.write('Primeira linha.\n')

# Anexa a segunda linha
with open('log.txt', 'a', encoding='utf-8') as f:
    f.write('Segunda linha.\n')

# Lê e imprime o conteúdo final
with open('log.txt', 'r', encoding='utf-8') as f:
    print(f.read())

Passo a passo

  1. O primeiro with abre log.txt no modo 'w', que cria ou sobrescreve o arquivo.
  2. f.write('Primeira linha.\n') grava a primeira linha.
  3. O segundo with abre o mesmo arquivo no modo 'a', que adiciona conteúdo ao final sem apagar o que já existe.
  4. f.write('Segunda linha.\n') grava a segunda linha.
  5. O terceiro with abre o arquivo no modo 'r' e f.read() lê tudo.
  6. print exibe o conteúdo, que deve ter as duas linhas.

Por que funciona

O modo 'w' cria um novo arquivo ou trunca o existente, enquanto o modo 'a' posiciona o cursor no final do arquivo para adicionar dados. O with garante que cada operação seja finalizada corretamente, fechando o arquivo e liberando recursos.

Erros comuns

  • Usar 'w' na segunda escrita: apagaria a primeira linha.
  • Esquecer o \n: as linhas ficariam grudadas.
  • Não fechar o arquivo (sem with): o conteúdo pode não ser gravado imediatamente.

Outra forma de resolver

Usar pathlib.Path:

from pathlib import Path
caminho = Path('log.txt')
with caminho.open('w', encoding='utf-8') as f:
    f.write('Primeira linha.\n')
with caminho.open('a', encoding='utf-8') as f:
    f.write('Segunda linha.\n')
with caminho.open('r', encoding='utf-8') as f:
    print(f.read())

Saída esperada

Primeira linha.
Segunda linha.