Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Erro ao definir dados, marcacoes = carregar_acessos() no terminal

Quando eu rodo no terminal, aparece a seguinte mensagem:

File "/home/mr-luiza/Documentos/Alura/Machine/dados.py", line 11, in carregar_acessos for linha in leitor: Error: iterator should return strings, not bytes (did you open the file in text mode?)

Meu código é esse:

import csv

def carregar_acessos():

    dados = []
    marcacoes = []

    arquivo = open('/home/mr-luiza/alura.csv', 'rb')
    leitor = csv.reader(arquivo)

    for acessou_home,acessou_como_funciona,acessou_contato,comprou in leitor:

        dados.append([acessou_home,acessou_como_funciona,acessou_contato])
        marcacoes.append([comprou])

    return dados, marcacoes
7 respostas

Oi mrluiza, tudo bem?

Você está utilizando Python3? Se sim, você tem que passar como segundo parâmetro da função open apenas o valor 'r':

arquivo = open('/home/mr-luiza/alura.csv', 'r')

Mudei para o python 2.7 E agora está retornando outro erro

Traceback (most recent call last): File "", line 1, in File "classificacao.py", line 11, in carregar_acessos for acessou_home,acessou_como_funciona,acessou_contato,comprou in leitor: ValueError: need more than 0 values to unpack

Meu código está assim:

import csv

def carregar_acessos():

     dados = []

     marcacoes = []

       arquivo = open('/home/mr-luiza/Documentos/Alura/Machine/a.csv', 'rb')

       leitor = csv.reader(arquivo)
    for acessou_home,acessou_como_funciona,acessou_contato,comprou in leitor:

        dados.append([acessou_home, acessou_como_funciona, acessou_contato])
        marcacoes.append(comprou)

    return dados, marcacoes

P.S: Estou tendo problemas em fazer a identação correta aqui no fórum, mas no meu computador a indentação está certa.

Oi, tudo bem?

Esse erro está dando porque a variável leitor está vindo vazia, ou então, ela está apontando para um lugar vazio na memória...

Olhando seu código, ele está certo, talvez seja algum problema no arquivo, isto é, na maneira em que os dados estão dentro dele.

Pode mostrar o conteúdo do arquivo CSV, por favor?

acessou_home,acessou_como_funciona,acessou_contato,comprou

1,1,0,0

1,1,0,0

1,1,0,0

1,1,0,0

1,1,0,0

1,0,1,1

1,1,0,0

1,0,1,1

1,1,0,0

1,0,1,1

1,1,0,1

1,0,1,1

0,0,1,0

0,0,1,0

0,0,1,0

0,0,1,0

0,0,1,0

0,1,0,0

0,0,1,0

0,1,0,0

0,0,1,0

0,1,0,0

0,0,1,0

0,1,0,0

1,0,1,1

1,1,1,1

1,1,1,1

1,0,1,1

0,1,0,0

0,0,1,0

0,1,0,0

1,0,1,1

0,0,1,0

1,0,1,1

1,0,1,1

1,0,1,1

1,0,1,1

0,0,1,0

1,1,0,0

1,0,1,1

0,1,0,0

0,0,1,0

0,1,0,0

1,0,1,1

0,0,1,0

0,0,1,0

1,0,1,1

1,0,1,1

1,1,0,0

1,1,0,0

1,1,0,0

1,1,0,0

1,0,1,1

1,1,0,0

1,0,1,1

1,1,0,0

1,0,1,1

1,1,0,0

1,0,1,1

0,0,1,0

1,0,1,1

0,1,0,0

0,0,1,0

0,1,0,0

1,0,1,1

0,1,1,1

0,0,1,0

1,0,1,1

1,0,1,1

1,1,0,0

1,1,0,0

0,0,1,0

0,0,1,0

0,0,1,0

0,0,1,0

0,1,0,0

0,0,1,0

0,1,0,0

0,0,1,0

1,1,0,1

0,0,1,0

0,0,1,0

0,0,1,0

1,0,1,1

1,0,1,1

1,1,0,0

1,1,0,0

0,0,1,0

0,0,1,0

1,0,1,1

1,0,1,1

1,1,0,0

1,1,0,0

0,0,1,0

0,0,1,0

1,1,1,1

0,0,1,0

0,1,0,0

0,0,0,0

Oi mrluiza, tudo bem?

Todos os seus arquivos parecem corretos, vamos fazer um teste?

Coloca o seu arquivo .py no mesmo diretório do arquivo CSV, aí, neste caso, não passa o caminho até o arquivo no sistema, passa apenas o nome e a extensão.

import csv

def carregar_acessos():
     dados = []
     marcacoes = []
     arquivo = open('a.csv', 'rb')
     leitor = csv.reader(arquivo)
    for acessou_home,acessou_como_funciona,acessou_contato,comprou in leitor:
        dados.append([acessou_home, acessou_como_funciona, acessou_contato])
        marcacoes.append(comprou)
    return dados, marcacoes

Se mesmo assim não funcionar, pode me mostrar onde você está chamando essa função?

Aparece o mesmo erro.

from classificacao import carregar_acessos

dados, marcacoes = carregar_acessos() Traceback (most recent call last): File "", line 1, in File "classificacao.py", line 13, in carregar_acessos for acessou_home,acessou_como_funciona,acessou_contato,comprou in leitor: ValueError: need more than 0 values to unpack

solução!

Deu certo! O problema estava no arquivo csv.