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

Adicionar nova linha ao arquivo.csv

main.py

import pandas as pd


"""
Criar a base de dados para armazenar as movimentações
"""
# Ticker, Qtd. de papéis, Valor pago, data; ok
# Valor aplicado(Qtd. de papéis * Valor pago);
# Preço Médio(Total aplicado/Qtd. papéis);
# Total aplicado(Somatório dos valores aplicados);
# Total papéis(Somatório das Qtd. de papéis);
# Proventos.

# Criando as colunas do DF
columns = ['Ticker', 'Qtd_de_papeis', 'Valor_pago', 'Data']
# Criando as linhas do DF
rows = {}
# Método para adicionar itens ao DF

# Criando o DF
df = pd.DataFrame(data=rows, index=[0], columns=columns)


"""
Criar função aporte
"""
# Ticker
# Qtd. de papéis
# Valor Pago
# Data
# Adicionar evento à base de movimentações


"""
Criar função Resgate
"""
# Ticker
# Qtd. de papéis
# Valor de Venda
# Data
# Adicionar evento à base de movimentações


"""
Calcular as variáveis a serem apresentadas
"""
# Preço Médio(Total aplicado/Qtd. papéis)
# Total aplicado(Somatório dos valores aplicados) ou(Valor Médio * Qtd. papéis)
# Total papéis(Somatório das Qtd. de papéis)
# Saldo Bruto(Total aplicado - (Total de papéis * Última cotação)
# Rentabilidade da aplicação(((Saldo Bruto / Total aplicado)*1oo)-100)
# Peso na Carteira((Saldo Bruto / Saldo Bruto da carteira)*100)
# Saldo Bruto da carteira(Somatório do Saldo Bruto)
# Rentabilidade Total da carteira(Saldo Bruto da carteira / Valor aplicado da carteira)*100
# Valor aplicado da carteira(Somatório do total aplicado)


"""
Situação atual da carteira
"""
# Saldo Bruto da carteira(Somatório do Saldo Bruto)
# Rentabilidade Total da carteira(Saldo Bruto da carteira / Valor aplicado da carteira)*100
# Valor aplicado da carteira(Somatório do total aplicado)

cadastro.py

from PySimpleGUI import PySimpleGUI as sg
import main
import pandas as pd

# Layout
sg.theme('Reddit')
layout = [
    [sg.Text('Ticker: '), sg.Input(key='Ticker')],
    [sg.Text('Quantidade de Papéis: '), sg.Input(key='Qtd_de_papeis')],
    [sg.Text('Valor: '), sg.Input(key='Valor_pago')],
    [sg.Text('Data:'), sg.Input(key='Data')],
    [sg.Button('Adicionar')]
]
# Janela
window = sg.Window('Tela de Cadastro', layout)
# Ler os eventos


while True:
    events, values = window.read()
    if events == sg.WINDOW_CLOSED:
        break
    if events == 'Adicionar':
        main.rows = values
        df = pd.DataFrame(data=main.rows, index=[0], columns=main.columns)
        print(df)
        df.to_csv('dados/registro.csv', sep=';')

Com esse código, consigo apenas criar um arquivo csv novo toda vez que rodo o código, mas gostaria de saber como faço para em vez de criar um csv novo, apenas adicionar uma linha a um arquivo csv ja existente, com o sistema de cadastro que tenho codado.

1 resposta
solução!

Bom dia Mauricio, tudo bem? Espero que sim!

A função to_csv tem o modo padrão de escrita, portanto sobrescreve o arquivo toda vez que rodar, o que você pode fazer é mudar o modo de funcionamento usando um parâmetro mode = 'a'. O 'a' corresponde ao append, ou seja, adiciona ao final do arquivo.

df.to_csv('dados/registro.csv', sep=';', mode = 'a')

Basta substituir na última função do seu código essa parte.

Espero que tenha tirado sua dúvida.

Estou à disposição; Bons estudos!