Ficheiros e iteradores

Trabalhar com ficheiros em Python permite a leitura, escrita e manipulação de dados de forma eficiente e prática. Iteradores, por sua vez, ajudam-nos a percorrer elementos numa coleção, tornando a manipulação de dados ainda mais poderosa. Vamos explorar ambos os conceitos com exemplos práticos.

Trabalhar com Ficheiros

Leitura de Ficheiros

Para ler ficheiros em Python, normalmente usamos a função open(). Esta função abre o ficheiro e retorna um objeto de ficheiro que podemos usar para ler o conteúdo.

# Abrir um ficheiro em modo de leitura
with open('exemplo.txt', 'r') as ficheiro:
    conteudo = ficheiro.read()
    print(conteudo)

Neste exemplo, usamos a instrução with para assegurar que o ficheiro é fechado corretamente após a leitura. A função read() lê todo o conteúdo do ficheiro de uma só vez.

Escrita em Ficheiros

A escrita em ficheiros também é fácil de realizar em Python. Pode usar o modo w para escrever num ficheiro, ou a para anexar conteúdo a um ficheiro existente.

# Abrir um ficheiro em modo de escrita
with open('exemplo.txt', 'w') as ficheiro:
    ficheiro.write('Esta é uma linha de exemplo.\n')

# Agora a abrir em modo de anexar
with open('exemplo.txt', 'a') as ficheiro:
    ficheiro.write('Esta linha será adicionada ao final do ficheiro.\n')
Leitura Linha-a-Linha

Ler um ficheiro linha-a-linha pode ser mais eficiente se estivermos a trabalhar com ficheiros grandes. O método readlines() lê o ficheiro e retorna uma lista de linhas.

with open('exemplo.txt', 'r') as ficheiro:
    linhas = ficheiro.readlines()
    for linha in linhas:
        print(linha.strip())  # strip() remove espaços em branco no início e no fim

Iteradores e Iteráveis

Compreender Iteradores

Em Python, um iterador é um objeto que implementa os métodos __iter__() e __next__(). Qualquer objeto que siga estas regras pode ser percorrido com um ciclo for.

lista = [1, 2, 3, 4, 5]
iterador = iter(lista)

print(next(iterador))  # Saída: 1
print(next(iterador))  # Saída: 2
Utilizando Ciclo For

O ciclo for interno de Python utiliza iteradores de forma implícita, tornando o código mais limpo e conciso.

for elemento in lista:
    print(elemento)
Criar Funções Geradoras

As funções geradoras usam a palavra-chave yield para retornar valores um a um, em vez de retornar tudo de uma só vez.

def minha_geradora():
    yield 1
    yield 2
    yield 3

gerador = minha_geradora()

print(next(gerador))  # Saída: 1
print(next(gerador))  # Saída: 2
Iteradores e Ficheiros

Quando trabalhamos com ficheiros, podemos usar iteradores para ler o ficheiro linha-a-linha de maneira mais eficiente.

with open('exemplo.txt', 'r') as ficheiro:
    for linha in ficheiro:
        print(linha.strip())

Resumo

Neste capítulo, explorámos como trabalhar com ficheiros em Python, incluindo como ler e escrever ficheiros e como ler ficheiros linha-a-linha. Também aprendemos sobre iteradores, iteráveis e funções geradoras, e como estes conceitos se aplicam na manipulação de ficheiros de maneira eficiente.

Quiz

  1. Qual a função usada para abrir um ficheiro em Python?

    • a) open()
    • b) file()
    • c) read()
    • d) write()
  2. Qual é o propósito da instrução with ao trabalhar com ficheiros?

    • a) Para acelerar a leitura e escrita
    • b) Para assegurar que o ficheiro é fechado automaticamente
    • c) Para abrir múltiplos ficheiros ao mesmo tempo
    • d) Para permitir um bloqueio de leitura/escrita
  3. O que faz a função readlines() num objeto de ficheiro?

    • a) Lê uma linha de cada vez
    • b) Retorna uma lista com todas as linhas do ficheiro
    • c) Fecha o ficheiro após a leitura
    • d) Escreve uma linha no ficheiro
  4. O que é um iterador em Python?

    • a) Uma lista de elementos
    • b) Uma função para ler ficheiros
    • c) Um objeto que implementa os métodos __iter__() e __next__()
    • d) Um container para armazenar dados
  5. Qual a principal diferença entre yield e return numa função?

    • a) yield retorna múltiplos valores
    • b) yield retorna um valor de cada vez
    • c) return retorna múltiplos valores
    • d) Ambas as opções a e b

Respostas:

  1. a) open()
  2. b) Para assegurar que o ficheiro é fechado automaticamente
  3. b) Retorna uma lista com todas as linhas do ficheiro
  4. c) Um objeto que implementa os métodos iter() e next()
  5. d) Ambas as opções a e b
<< Listas, variáveis e dicio... Índice Utilizações de Python >>