# script com funções auxiliares import csv # gravar dados importados para ficheiro csv def gravar_dados_ficheiro_csv( nome_ficheiro: str, dados_importados: list, campos: list ) -> None: """ Guarda dados em um ficheiro CSV. Args: nome_ficheiro (str): O nome do ficheiro CSV. dados_importados (list): Uma lista de dicionários com os dados a serem gravados. campos (list): Uma lista com os nomes dos campos a serem gravados. Raises: ValueError: Se algum dos argumentos não for do tipo esperado. Returns: None """ # validacao de parametros da funcao if not isinstance(nome_ficheiro, str): raise ValueError("'nome_ficheiro' não é do tipo 'str'") if not isinstance(dados_importados, list): raise ValueError("'dados_importados' não é do tipo 'list'") if not isinstance(campos, list): raise ValueError("'campos' não é do tipo 'list'") with open(nome_ficheiro, "w", newline="") as ficheiro_csv_historico_precos: ficheiroCSV = csv.DictWriter(ficheiro_csv_historico_precos, fieldnames=campos) ficheiroCSV.writeheader() ficheiroCSV.writerows(dados_importados) # carregar dados de ficheiro csv e guardar em lista def carregar_dados_ficheiro_csv(nome_ficheiro: str, campos: list) -> list: """ Carrega dados de um ficheiro CSV e retorna uma lista de dicionários. Args: nome_ficheiro (str): O nome do ficheiro CSV. campos (list): Uma lista de nomes de campos correspondentes aos chaves dos dicionários. Raises: ValueError: Se algum dos argumentos for inválido. Returns: list: Uma lista de dicionários contendo os dados do ficheiro CSV. """ # validacao de metodos da funcao if not isinstance(nome_ficheiro, str): raise ValueError("'nome_ficheiro' não é do tipo 'str'") if not isinstance(campos, list): raise ValueError("'campos' não é do tipo 'list'") with open(nome_ficheiro, "r", newline="") as ficheiro_csv_historico_precos: ficheiroCSV = csv.DictReader(ficheiro_csv_historico_precos, fieldnames=campos) lista_linhas_ficheiro_csv: list = [] for linha in ficheiroCSV: lista_linhas_ficheiro_csv.append(linha) return lista_linhas_ficheiro_csv # validar chave API http://192.168.1.131:3000/sanctus/crypto_portfolio/issues/1 def validarChaveAPI(chave_api: str) -> bool: # remover espaços em branco chave_api.strip() # chave invalida se tamanho for diferente de 27 ('CG-' + 24) if len(chave_api) != 27: return False # chave inválida se primeiros 3 caracteres forem diferentes de 'CG-' if len(chave_api) >= 3 and chave_api[0:3] != "CG-": return False return True