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:
- w (Write) – Este modo de escrita substitui todo o conteúdo do arquivo.
- a (Append) – Este modo acrescenta o conteúdo no final do arquivo.
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()
Fala Irias! Bom demais o tutorial. Uma outra forma legal tambem (dica ai pro proximo post) seria usar um block com `with`, assim nao precisa se preocupar em fechar o arquivo depois. Assim que o bloco termina o arquivo e’ fechado. Exemplo:
“`
with open(filename, mode=”a”) as my_file:
my_file.write(“hell world”)
“`
Valeu!
Fala Chico! Muito obrigado pela dica. Com isso o código fica mais limpo e também não corre o risco de esquecer de fechar o arquivo depois.
Valeu!!!