Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Erro de sintaxe ao importar a classe

Boa tarde, ao executar o passo de importar a classe Dados, o terminal retornou os seguintes erros:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Não identifiquei o erro de sintaxe, poderiam me ajudar? Segui algumas orientações que encontrei neste forum, mas sem sucesso.


import json
import csv

import sys 
sys.path.append ('scripts/processamento_dados.py') 
from processamento_dados import Dados

#Função Json
def leitura_json(path_json):
    dados_json = []
    with open(path_json, 'r') as file:
        dados_json = json.load(file)
    return dados_json

#Função CSV
def leitura_csv(path_csv):
    dados_csv = []
    with open(path_csv, 'r') as file:
        spamreader = csv.DictReader(file, delimiter=',') #DictReader trás os dados em formato de Dicionário, o comando Reader mantinha o formato list
        for row in spamreader:
            dados_csv.append(row)
    return dados_csv

def leitura_dados(path, tipo_arquivo):
    dados = []

    if tipo_arquivo == 'csv':
        dados = leitura_csv(path)

    elif tipo_arquivo == 'json':
        dados = leitura_json(path)

    return dados

def get_comlumns(dados):
    return list (dados[-1].keys())

def rename_columns(dados, key_mapping):
    new_dados_csv = []

    for old_dict in dados:
        dict_temp = {}
        for old_key, value in old_dict.items():
            dict_temp[key_mapping[old_key]] = value
            new_dados_csv.append(dict_temp)
    
    return new_dados_csv

def size_data(dados):
    return len(dados)

def join(dadosA, dadosB):
    combined_list = []
    combined_list.extend(dadosA)
    combined_list.extend(dadosB)
    return combined_list

def transformando_dados_tabela(dados, nomes_colunas):
    dados_combinados_tabela = [nomes_colunas]

    for row in dados: 
        linha = []
        for coluna in nomes_colunas:
            linha.append(row.get(coluna, 'Indisponível'))
        dados_combinados_tabela.append(linha)
    
    return dados_combinados_tabela

def salvando_dados(dados, path):
    with open(path, 'w') as file:
        writer = csv.writer(file)
        writer.writerows(dados)


path_json = 'data_raw/dados_empresaA.json'
path_csv = 'data_raw/dados_empresaB.csv'

dados_empresaA = Dados(path_json, 'json')
print(dados_empresaA)

# #Iniciando a leitura
# dados_json = leitura_dados(path_json, 'json')
# nome_colunas_json = get_comlumns(dados_json)
# tamanho_dados_json = size_data(dados_json)

# print(f"Nome colunas dados json: {nome_colunas_json}")
# print(f"Tamanho dos dados json: {tamanho_dados_json}")

# dados_csv = leitura_dados(path_csv, 'csv')
# nome_colunas_csv = get_comlumns(dados_csv)
# tamanho_dados_csv = size_data(dados_csv)

# print(nome_colunas_csv)
# print(f"Tamanho dos dados csv: {tamanho_dados_csv}")


# #Transformação dos dados

# key_mapping = {'Nome do Item': 'Nome do Produto',
#                'Classificação do Produto' : 'Categoria do Produto',
#                'Valor em Reais (R$)' : 'Preço do Produto (R$)',
#                'Quantidade em Estoque' : 'Quantidade em Estoque',
#                'Nome da Loja' : 'Filial',
#                'Data da Venda' : 'Data da Venda'}


# dados_csv = rename_columns(dados_csv, key_mapping)
# nome_colunas_csv = get_comlumns(dados_csv)
# print(nome_colunas_csv)

# dados_fusao = join(dados_json, dados_csv)
# nome_colunas_fusao = get_comlumns(dados_fusao)
# tamanho_dados_fusao = size_data(dados_fusao)
# print(nome_colunas_fusao)
# print(tamanho_dados_fusao)

# #Salvando os dados

# dados_fusao_tabela = transformando_dados_tabela(dados_fusao, nome_colunas_fusao)

# path_dados_combinados = 'data_processed/dados_combinados.csv'

# salvando_dados(dados_fusao_tabela, path_dados_combinados)
# print (path_dados_combinados)
1 resposta
solução!

Oi Daniela,

O erro SyntaxError: invalid syntax na linha 1, indica que você está tentando executar o arquivo processamento_dados.py ou fusao_mercado_fev.py como um script diretamente, e não como um módulo importado.

A linha sys.path.append('scripts/processamento_dados.py') adiciona o caminho do arquivo à lista de caminhos do sistema, mas não o arquivo em si. Para importar a classe Dados, você deve adicionar o diretório scripts ao sys.path e não o arquivo.

O código correto para importar seria:

import sys
sys.path.append('scripts')
from processamento_dados import Dados

Além disso, o arquivo processamento_dados.py precisa conter a definição da classe Dados. Se a classe estiver em outro arquivo, você deve importar o módulo onde a classe está definida.

Por exemplo, se a classe Dados estiver no arquivo scripts/classe_dados.py, a importação correta seria:

import sys
sys.path.append('scripts')
from classe_dados import Dados

Certifique-se que o arquivo classe_dados.py exista e contenha a definição da classe Dados.

tux matrix    Caso este post o tenha ajudado, por favor, marcar como solucionado ☑️. Bons Estudos! 🤓