adicionar apenas entradas da resposta que não estão presentes no ficheiro CSV
This commit is contained in:
32
portfolio.py
32
portfolio.py
@ -24,7 +24,7 @@ headers = {
|
||||
}
|
||||
|
||||
resposta = requests.get(url, headers= headers)
|
||||
# carregar dados já existentes em ficheiro CSV (criar ficheiro se não existir)
|
||||
# carregar dados já existentes em ficheiro CSV (criar ficheiro se não existir) para dicionario
|
||||
import csv
|
||||
import os
|
||||
cabecalho: list = [ 'data_unix', 'criptomoeda', 'vs_currency', 'preco_abertura', 'preco_maximo', 'preco_minimo', 'preco_fecho' ]
|
||||
@ -36,26 +36,34 @@ if (os.path.exists(caminho_ficheiro_csv_historico_bitcoin) == False):
|
||||
ficheiro.close()
|
||||
with open(caminho_ficheiro_csv_historico_bitcoin, 'r', newline='') as ficheiro_csv_historico_precos:
|
||||
ficheiroCSV = csv.DictReader(ficheiro_csv_historico_precos)
|
||||
entradas: list = []
|
||||
lista_linhas_ficheiro_csv: list = []
|
||||
for linha in ficheiroCSV:
|
||||
entradas.append(linha)
|
||||
lista_linhas_ficheiro_csv.append(linha)
|
||||
|
||||
# converter dados de coingecko para o formato usado no ficheiro CSV
|
||||
novas_linhas: list = []
|
||||
lista_linhas_resposta: list = []
|
||||
for linha_resposta in resposta.json():
|
||||
nova_entrada: dict = {}
|
||||
nova_entrada[cabecalho[0]] = linha_resposta[0]
|
||||
nova_entrada[cabecalho[0]] = str(linha_resposta[0])
|
||||
nova_entrada[cabecalho[1]] = criptomoeda
|
||||
nova_entrada[cabecalho[2]] = vs_currency
|
||||
nova_entrada[cabecalho[3]] = linha_resposta[1]
|
||||
nova_entrada[cabecalho[4]] = linha_resposta[2]
|
||||
nova_entrada[cabecalho[5]] = linha_resposta[3]
|
||||
nova_entrada[cabecalho[6]] = linha_resposta[4]
|
||||
novas_linhas.append(nova_entrada)
|
||||
# eliminar registos que não sejam novos
|
||||
nova_entrada[cabecalho[3]] = str(linha_resposta[1])
|
||||
nova_entrada[cabecalho[4]] = str(linha_resposta[2])
|
||||
nova_entrada[cabecalho[5]] = str(linha_resposta[3])
|
||||
nova_entrada[cabecalho[6]] = str(linha_resposta[4])
|
||||
lista_linhas_resposta.append(nova_entrada)
|
||||
|
||||
# adicionar items de lista_linhas_resposta se não existirem em lista_linhas_ficheiro_csv (aka: adicionar apenas items novos a lista_linhas_ficheiro_csv)
|
||||
for item_resposta in lista_linhas_resposta:
|
||||
item_existe: bool= False
|
||||
for linha_ficheiro_csv in lista_linhas_ficheiro_csv:
|
||||
if (item_resposta == linha_ficheiro_csv) and (item_resposta == linha_ficheiro_csv):
|
||||
item_existe = True
|
||||
if not item_existe:
|
||||
lista_linhas_ficheiro_csv.append(item_resposta)
|
||||
|
||||
# gravar dados importados
|
||||
with open(caminho_ficheiro_csv_historico_bitcoin, 'w+', newline='') as ficheiro_csv_historico_precos:
|
||||
ficheiroCSV = csv.DictWriter(ficheiro_csv_historico_precos, fieldnames=cabecalho)
|
||||
ficheiroCSV.writeheader()
|
||||
ficheiroCSV.writerows(entradas)
|
||||
ficheiroCSV.writerows(lista_linhas_ficheiro_csv)
|
||||
|
||||
Reference in New Issue
Block a user