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
witheencoding='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
- O primeiro
withabrelog.txtno modo'w', que cria ou sobrescreve o arquivo. f.write('Primeira linha.\n')grava a primeira linha.- O segundo
withabre o mesmo arquivo no modo'a', que adiciona conteúdo ao final sem apagar o que já existe. f.write('Segunda linha.\n')grava a segunda linha.- O terceiro
withabre o arquivo no modo'r'ef.read()lê tudo. printexibe 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.