Em qualquer contexto de programação, a manipulação de arquivos é crucial. Em Python, essa capacidade é robusta, permitindo operações como leitura, escrita e muito mais, com flexibilidade e segurança.
Ao concluir este guia, você estará apto a:
- Abrir e extrair dados de arquivos em Python.
- Processar linhas específicas dentro de um arquivo de texto.
- Adicionar ou sobreescrever conteúdo em arquivos.
- Empregar gerenciadores de contexto para uma gestão eficiente de arquivos.
Como Realizar a Leitura de Arquivos em Python
Para iniciar a leitura, utilize a função `open()` com a seguinte estrutura: `open(‘nome_do_arquivo’, ‘modo’)`.
- O argumento `nome_do_arquivo` indica o arquivo a ser acessado.
Importante: Se o arquivo estiver no mesmo diretório do seu script, basta informar o nome. Caso contrário, especifique o caminho completo para o arquivo.
- O parâmetro `modo` define a forma de acesso ao arquivo.
O modo padrão para abertura é o de leitura, representado por `’r’`. Contudo, explicitar o modo é uma prática recomendada.
Antes de avançarmos, vamos examinar o conteúdo do arquivo `lib.txt`, que servirá de base para nossos exemplos.
📁 O arquivo de texto e o código usado neste tutorial podem ser baixados deste repositório no GitHub.
O código a seguir demonstra como abrir e ler o conteúdo do arquivo ‘lib.txt’ utilizando a função `open()`:
arquivo = open('lib.txt', 'r') conteudo = arquivo.read() print(conteudo) arquivo.close() # Resultado Olá, mundo! Aqui estão algumas bibliotecas Python úteis: 1) NumPy 2) pandas 3) matplotlib 4) seaborn 5) scikit-learn 6) BeautifulSoup 7) Scrapy 8) nltk 9) Bokeh 10) statsmodels
Neste exemplo:
- A função `open()` cria um objeto do tipo arquivo, que nomeamos `arquivo`.
- Em seguida, usamos o método `read()` para ler todo o conteúdo do arquivo.
- O conteúdo é então armazenado na variável `conteudo` e exibido na tela.
- Finalmente, fechamos o arquivo utilizando `arquivo.close()`.
A negligência no fechamento de arquivos pode levar ao esgotamento de recursos, especialmente ao lidar com um grande número deles. O não fechamento de arquivos pode causar consumo excessivo de memória.
Para otimizar essa operação, vamos empregar gerenciadores de contexto. O exemplo abaixo ilustra como utilizá-los:
with open('lib.txt', 'r') as f: conteudo = f.read() print(conteudo)
Ao empregar gerenciadores de contexto, a função `close()` torna-se desnecessária, pois o arquivo é automaticamente fechado após a conclusão das operações de leitura/escrita.
Como Extrair Linhas de um Arquivo em Python
No arquivo de exemplo, o número de linhas é pequeno. No entanto, em cenários com arquivos maiores, ler todo o conteúdo de uma vez pode não ser a abordagem mais eficiente.
Em arquivos extensos, essa estratégia pode levar a problemas de memória. Uma alternativa é ler as linhas do arquivo individualmente, como mostraremos a seguir.
Utilizando o Método `readline()`
O método `readline()` permite ler uma linha do arquivo por vez.
Veja o seguinte exemplo:
with open('lib.txt', 'r') as f: linha = f.readline() print(linha) linha = f.readline() print(linha) # Resultado Olá, mundo! Aqui estão algumas bibliotecas Python úteis:
Como pode ser observado, cada chamada do método `readline()` lê e exibe uma linha do arquivo.
O cursor do arquivo avança para o início da próxima linha após cada chamada de `readline()`.
Os métodos `tell()` e `seek()` permitem verificar e manipular a posição do cursor do arquivo, respectivamente.
O código abaixo demonstra o uso de `f.seek(0)` para resetar o cursor para o início do arquivo. Assim, a primeira linha será impressa duas vezes.
with open('lib.txt', 'r') as f: linha = f.readline() print(linha) f.seek(0) linha = f.readline() print(linha) # Resultado Olá, mundo! Olá, mundo!
Utilizando o Método `readlines()`
O método `readlines()` retorna uma lista contendo todas as linhas do arquivo.
Observe o seguinte código:
with open('lib.txt', 'r') as f: linhas = f.readlines() print(linhas) # Resultado ['Olá, mundo!\n', 'Aqui estão algumas bibliotecas Python úteis:\n', '1) NumPy\n', '2) pandas\n', '3) matplotlib\n', '4) seaborn\n', '5) scikit-learn\n', '6) BeautifulSoup\n', '7) Scrapy\n', '8) nltk\n', '9) Bokeh\n', '10) statsmodels\n', '\n']
Utilizando o Loop `for` para Ler Linhas
Um loop `for` pode ser usado para iterar sobre as linhas de um arquivo.
Ao obter o objeto de arquivo, o loop `for` permite percorrer o conteúdo do arquivo linha por linha, como demonstrado abaixo:
with open('lib.txt', 'r') as f: for linha in f: print(linha, end='')
A função `print()` adiciona uma quebra de linha por padrão. Para evitar duplicatas, definimos `end=”` para manter a formatação original do arquivo.
Como Ler Partes do Conteúdo de um Arquivo em Python
Python permite a leitura de arquivos em partes menores.
Observe o código abaixo:
- Definimos o `chunk_size` como 50. Isso fará com que os primeiros 50 caracteres sejam lidos e exibidos.
- Ao usar o método `tell()`, verificamos a posição do cursor do arquivo.
chunk_size = 50 with open('lib.txt', 'r') as f: chunk = f.read(chunk_size) print(chunk) current = f.tell() print(f"Posição atual do cursor: {current}") # Resultado Olá, mundo! Aqui estão algumas bibliotecas Python út Posição atual do cursor: 51
Essa abordagem pode ser utilizada para ler um arquivo inteiro em blocos, como no exemplo a seguir:
chunk_size = 50 with open('lib.txt', 'r') as f: chunk = f.read(chunk_size) print(chunk, end='') while len(chunk) > 0: chunk = f.read(chunk_size) print(chunk, end='') # Resultado Olá, mundo! Aqui estão algumas bibliotecas Python úteis: 1) NumPy 2) pandas 3) matplotlib 4) seaborn 5) scikit-learn 6) BeautifulSoup 7) Scrapy 8) nltk 9) Bokeh 10) statsmodels
Utilizamos um loop `while` para ler o conteúdo do arquivo em blocos de 50 caracteres até o fim.
Como Escrever em um Arquivo em Python
Para escrever em um arquivo de texto, é necessário abri-lo no modo de escrita (`’w’`).
O seguinte código ilustra como isso é feito:
with open('novo_arquivo.txt', 'w') as f: f.write('Olá, Python!')
Isso criará um arquivo chamado `novo_arquivo.txt` no diretório atual.
Se executarmos o mesmo código novamente, o conteúdo anterior será substituído.
Execute o comando `cat novo_arquivo.txt` no terminal:
cat novo_arquivo.txt # Resultado: Olá, Python!
Isso acontece porque o modo de escrita (`’w’`) sobrescreve o conteúdo existente. Para adicionar dados ao arquivo sem apagar o conteúdo anterior, utilize o modo de anexação.
Como Anexar Conteúdo a um Arquivo em Python
Para adicionar conteúdo a um arquivo sem sobrescrevê-lo, utilize o modo de anexação (`’a’`).
O código a seguir, quando executado duas vezes, adiciona a string ao arquivo:
with open('novo_arquivo.txt', 'a') as f: f.write('Olá, Python!')
Dessa forma, o conteúdo é adicionado ao final do arquivo:
cat novo_arquivo.txt # Resultado: Olá, Python!Olá, Python!
Conclusão
Revisamos as principais operações com arquivos:
- Leitura, escrita e anexação de dados.
- Uso de `seek()` para mover o cursor do arquivo.
- Uso de `tell()` para obter a posição atual do cursor.
Este guia visa oferecer uma base sólida para manipulação de arquivos em Python. Além de arquivos de texto, você pode explorar o trabalho com arquivos JSON.
Relacionado:
Como verificar o comprimento de uma lista em Python em 3 passos.