Como ler e escrever em um arquivo com Python

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()

2 comentários em “Como ler e escrever em um arquivo com Python”

  1. 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!

    1. 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!!!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *