Meu programa leu somente a primeira linha do arquivo csv. O que devo fazer?
Meu programa leu somente a primeira linha do arquivo csv. O que devo fazer?
import csv
def carregar_acessos():
dados = []
marcacoes = []
#arquivo = open('acesso.csv', 'rb'), delimitador = ',')
leitor = csv.reader (open('acesso.csv'), delimiter = ',')
for home,como_funciona,contato,comprou in leitor:
dados.append([home,como_funciona,contato])
marcacoes.append(comprou)
return dados, marcacoes
Gabriel, como o seu return
está dentro do for
, ele está lendo a primeira linha e logo retornando! Esse return
não pode ficar indentado no mesmo níver que o for
Eu tive problema Gabriel com a função next() que é apresentada a seguir (estou usando o Python 3.5). Eu alterei o código para o seguinte:
#Script para carregar os dados em uma lista
#Pacote para trabalhar com arquivos CSV
import csv
#Função para carregar os dados e os marcadores
def carregar_dados():
#Cria duas listas vázias para trazer os dados do arquivo
dados = []
marcadores = []
#Abre o arquivo em modo de leitura
#ATENÇÃO: O modo de leitura 'rb' abre os arquivos no seu formato de byte, enquanto que 'r' abre como string
arquivo = open('acesso_pagina.csv', 'r')
#Para acessar os dados no arquivo, utilizar um leitor, que passa por cada uma das linhas do arquivo
leitor = csv.reader(arquivo)
#Para pular uma linha no leitor, por exemplo o cabeçalho
#É necessário utilizar essa sintaxe a partir do Python 3.5
next(leitor)
#Pega cada linha do arquivo e carrega para as listas, utilizando os nomes das colunas
for acessou_home, acessou_como_funciona, acessou_contato, comprou in leitor:
#Coloca uma nova lista em dados
dados.append(
[int(acessou_home), int(acessou_como_funciona), int(acessou_contato)]
)
#Coloca um novo marcado
marcadores.append(int(comprou))
#Devolve as duas listas
return dados, marcadores