Da trilha de Python Este conceito ainda não saiu como card do dia. ir para o card de hoje

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.Path oferece 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.
arquivos_with.py
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()

Exercícios

  1. 1
    Fácil

    Ler e exibir um arquivo

    Escreva um programa que abra o arquivo dados.txt no modo leitura, leia todo o seu conteúdo e imprima na tela. Use with e especifique encoding='utf-8'.

    Resolver
  2. 2
    Médio

    Escrever e anexar em arquivo

    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.

    Resolver
  3. 3
    Desafio

    Processar arquivo com pathlib e encoding

    Dado um arquivo nomes.txt com um nome por linha (codificado em UTF-8), crie um programa que:

    1. Verifique se o arquivo existe usando pathlib.
    2. Leia todos os nomes, remova espaços em branco extras e os armazene em uma lista.
    3. Crie um novo arquivo nomes_ordenados.txt com os nomes em ordem alfabética, um por linha, também em UTF-8.
    4. Imprima quantos nomes foram processados.

    Resolver

Continue estudando