1
resposta

Engenharia de Dados - Classe Objetos

Boa tarde! Estou criando as classes, porém, quando eu crio a minha classe pra nomear as colunas, ela me retorna assim.

class Dados:

def __init__(self, path, tipo_dados):
    self.path = path
    self.tipo_dados = tipo_dados
    self.dados = self.leitura_dados()
    self.nome_colunas = self.get_columns()

def leitura_json(self):
    dados_json = []
    try:
        with open(self.path, 'r') as file:
            dados_json = json.load(file)
    except Exception as e:
        print(f"Erro ao ler o arquivo JSON: {e}")
    return dados_json

def leitura_csv(self):
    dados_csv = []
    with open(self.path, 'r') as file:
        spamreader = csv.DictReader(file, delimiter=',')
        for row in spamreader:
            dados_csv.append(row)
    return dados_csv

def leitura_dados(self):
    if self.tipo_dados == 'csv':
        return self.leitura_csv()
    elif self.tipo_dados == 'json':
        return self.leitura_json()
    else:
        print(f"Tipo de arquivo '{self.tipo_dados}' não suportado.")
        return []    
    
def get_columns(self):
    if not self.dados:
        return []
    if self.tipo_dados == 'csv' or (self.tipo_dados == 'json' and isinstance(self.dados[0], dict)):
        return list(self.dados[0].keys())
    else:
        print("Formato de dados inesperado.")
        return []
        

A chamada no script

dados_empresaB = Dados(path_json, 'csv')
print(dados_empresaB.nome_colunas)

O retorno

['[{"Nome do Produto":"Blush em p\\u00f3"', 'Categoria do Produto:"Eletrodom\\u00e9sticos"', 'Pre\\u00e7o do Produto (R$):79.41', 'Quantidade em Estoque:7', 'Filial:"Filial 7"}', '']

1 resposta

Oi Gustavo, tudo bem?

Notei um equívoco no seu código. Observe que ao fazer a leitura dos dados utilizando a variável dados_empresaB, você utiliza como parâmetro path_json.

Quando você cria a instância dados_empresaB passando o path_json e o tipo 'csv', o método leitura_dados() está retornando os dados do arquivo JSON, não do arquivo CSV.

Portanto, você deve corrigir o código inserindo o path_csv. Ficará assim:

dados_empresaB = Dados(path_csv, 'csv')
print(dados_empresaB.nome_colunas)

Espero ter ajudado.

Qualquer dúvida, compartilhe no fórum.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!