81 lines
2.7 KiB
Python
81 lines
2.7 KiB
Python
# 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
|