Python I/O Intermediário
Arquivos e with
Trabalhar com arquivos é uma tarefa comum em Python. A função open() permite abrir arquivos em diferentes modos, como leitura ('r'), escrita ('w') e anexação ('a'). É fundamental fechar o arquivo após o uso para liberar recursos e garantir que os dados sejam gravados corretamente.
O gerenciador de contexto with simplifica esse processo: ele abre o arquivo e garante que ele seja fechado automaticamente ao final do bloco, mesmo que ocorra uma exceção. Isso evita vazamentos de recursos e torna o código mais limpo e seguro.
Para manipular caminhos de arquivos de forma portável, o módulo pathlib oferece a classe Path, que representa caminhos como objetos e fornece métodos úteis para criar, verificar e percorrer diretórios. Além disso, ao abrir arquivos de texto, é importante especificar o encoding correto (como 'utf-8') para evitar problemas com caracteres especiais.
Neste card, você aprenderá a usar open() com with, a explorar o pathlib e a lidar com codificações. Esses conceitos são essenciais para qualquer programa que leia ou escreva dados em arquivos.
Pontos-chave
- Use
with open(...) as f:para garantir que o arquivo seja fechado automaticamente. - Os modos principais são
'r'(leitura),'w'(escrita, sobrescreve),'a'(anexa) e'x'(cria, falha se existir). pathlib.Pathoferece uma forma orientada a objetos para manipular caminhos e verificar existência de arquivos.- Sempre especifique
encoding='utf-8'ao abrir arquivos de texto para evitar erros de decodificação. - O modo
'w'apaga o conteúdo existente; use'a'para adicionar ao final.
from pathlib import Path
# Cria um arquivo de exemplo
caminho = Path('exemplo.txt')
with open(caminho, 'w', encoding='utf-8') as f:
f.write('Olá, mundo!\n')
f.write('Segunda linha.\n')
# Lê o arquivo inteiro
with open(caminho, 'r', encoding='utf-8') as f:
conteudo = f.read()
print('Conteúdo lido:')
print(conteudo)
# Lê linha por linha
print('Linhas:')
with open(caminho, 'r', encoding='utf-8') as f:
for linha in f:
print(linha.strip())
# Anexa mais uma linha
with open(caminho, 'a', encoding='utf-8') as f:
f.write('Terceira linha.\n')
# Verifica o novo conteúdo
with open(caminho, 'r', encoding='utf-8') as f:
print('Após anexar:')
print(f.read())
# Remove o arquivo de exemplo
caminho.unlink()