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

ERRO AO LER CÓDIGO IMPORTANDO CSV

Fiz o código exatamente como mostrou no vídeo 1 da aula 2, mas estou com problemas ao tentar executar o mesmo no console.

No console aparece o seguinte erro:

C:\Users\Júlio Billet\Desktop\Machine Learning>python
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from dados import carregar_acessos
>>> dados, marcacoes = carregar_acessos
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'function' object is not iterable
>>>

E o meu código é este:

import csv

def carregar_acessos():

    dados = []
    marcacoes = []

    arquivo = open('acesso_pagina.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

Queria saber como resolvo o erro acima, para poder prosseguir com o curso! Grato desde já!

6 respostas

Oi juliobillet , boa noite! carega_acessos é uma função e para chamar uma função não basta o nome -- é preciso colocar os parênteses, assim:

    dados, marcacoes = carregar_acessos()

desta maneira funciona. espero ter ajudado e bons estudos!

Coloquei os parênteses como disse e creio ter funcionado, mas agora o erro é outro:

C:\Users\Júlio Billet\Desktop\Machine Learning>python
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from dados import carregar_acessos
>>> dados, marcacoes = carregar_acessos()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\Júlio Billet\Desktop\Machine Learning\dados.py", line 11, in carregar_acessos
    for acessou_home,acessou_como_funciona,acessou_contato,comprou in leitor:
_csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)
>>>

Como procedo? :/

Certo, como você está utilizando o python3, deve passar como segundo argumento da função open() apenas 'r' e não 'rb', assim:

arquivo = open('acesso_pagina.csv', 'r')

veja se funciona e envia um retorno aqui

Outro erro! Socorro! rs Fiz a correção que você me orientou, mudei para "r", novamente, creio que funcionou, pois prosseguiu para o próximo erro! (rindo de nervoso)

C:\Users\Júlio Billet\Desktop\Machine Learning>python
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from dados import carregar_acessos
>>> dados, marcacoes = carregar_acessos()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\Júlio Billet\Desktop\Machine Learning\dados.py", line 13, in carregar_acessos
    dados.append(acessou_home, acessou_como_funciona, acessou_contato)
TypeError: append() takes exactly one argument (3 given)
>>>

Ele não aceita mais do que 1 argumento mais?

Meu código está assim no momento:

import csv

def carregar_acessos():

    dados = []
    marcacoes = []

    arquivo = open('acesso_pagina.csv', 'r')
    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

E sou grato por sua ajuda!

solução!

Oi Thiago, o erro agora é que você esqueceu de passar os dados em um tipo lista (faltaram os colchetes), assim:

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

já que a função append recebe apenas um argumento.

espero ter ajudado e bons estudos!

Me ajudou demais, Thais! Muito obrigado!!!