Como ler e escrever em um arquivo com Python

Anderson Irias - 24/04/2021

No artigo de hoje, vamos ver como realizar a leitura e escrita em um arquivo CSV, para um List Python. O CSV (Comma-separated values) é um formato de arquivo onde o conteúdo é separado por linhas e vírgulas. Este tipo de arquivo é comumente utilizado por softwares que trabalham com planilhas como: Microsoft Excel e o LibreOffice Calc. Com ele conseguimos exportar e importar dados de uma tabela, de forma simples e compatível.

Abrindo o arquivo

O primeiro passo que devemos fazer é abrir o arquivo para a leitura. Vamos começar atribuindo o nome do arquivo a uma variável. Depois disso utilizamos a função isfile, para verificar se o caminho informado é de um arquivo e utilizamos a função open para abrir o arquivo.

Assim como na manipulação de arquivos com o PHP, no Python também precisamos informar o modo de abertura do arquivo. Vamos abrir o arquivo com o modo “r” Read, que seria leitura. No final utilizamos a função close para fechar o arquivo. Abaixo nosso exemplo, estamos utilizando o arquivo teste.csv para o teste de leitura e escrita.

# -*- encoding: utf-8 -*-

import os.path import sys

filename = 'teste.csv'

if not os.path.isfile(filename): sys.exit()

fileopen = open(filename, "r") fileopen.close()

Arquivo teste.csv

1, Primeira, Linha, arquivo, Teste 2, Segunda, Linha, arquivo, Teste 3, Terceira, Linha, arquivo, Teste 4, Quarta, Linha, arquivo, Teste

No exemplo acima utilizamos o encoding utf-8 e também duas bibliotecas: os e sys. Essas bibliotecas foram necessárias para usarmos a função de verificação do arquivo e a função para encerrar o script caso erro.

Lendo o arquivo para a lista

O processo de leitura de um arquivo com o Python é bem simples, basta utilizarmos o  for para criar um loop com o resultado da função open, assim teremos acesso ao conteúdo do arquivo linha a linha. 

Por fim, para ler o arquivo para uma lista, no mesmo formato da tabela, utilizamos a função split para dividir a string em uma lista. Para adicionamos essa sub-lista criada a lista principal filecontent, utilizamos a função append.

# -*- encoding: utf-8 -*-

import os.path import sys

filename = 'teste.csv' filecontent = list()

if not os.path.isfile(filename): sys.exit()

fileopen = open(filename, "r")

for fileline in fileopen: filecontent.append(fileline.split(","))

print(filecontent)

fileopen.close()

Escrevendo no arquivo

Agora vamos escrever no arquivo, a parte inicial é bem semelhante, a diferença está no modo de abertura do arquivo. Para escrever em um arquivo podemos utilizar dois modos de escrita:

Vamos utilizar o “a” Append, para adicionar uma nova linha no fim da tabela. Assim, para escrever no arquivo utilizamos a função write. Vamos adicionar o conteúdo que está em um list Python.

Para o processo de escrita, primeiro devemos converter o list em uma string. Para isso vamos utilizar a função join, que une os dados de um iterável em uma string. Temos de passar como parâmetro do join uma iteração for da nossa lista newcontent. Utilizamos a vírgula e um espaço como separador. No início da string, incluímos o \n, que adiciona uma quebra de linha no arquivo.

Nosso código ficará da seguinte maneira.

# -*- encoding: utf-8 -*- import os.path import sys filename = 'teste.csv' newcontent = list((5, "Nova", "Linha", "Adicionada", "Teste")) if not os.path.isfile(filename): sys.exit() fileopen = open(filename, "a") fileopen.write("\n" + ", ".join([str(item) for item in newcontent])) fileopen.close()