How does Pickle behave with stored variables? (Python)

Asked

Viewed 38 times

1

I’m learning Python on my own and now I’m practicing the Pickle module. I managed to make it work normally, but it occurred to me a question about what happens when I store a variable in the pickle jar'.

Let’s say I’m trying to store information about a person. For that, I wrote two separate files. In the first, I create the Save and Load function and in the other store the class "Person" and an example.

File 1 (Var.py)

import pickle

class Pessoa(self, Nome, Sobrenome, Idade):
    self.Nome = Nome
    self.Sobrenome = Sobrenome
    self.Idade = Idade

Fulano = Pessoa('', '', '')

File 2 (Arm.py)

import pickle
import Var

# Função de Armazenar #
def Armazenar():
    Sujeito = open('Sujeito.pck', 'wb')
    pickle.dump(Var.Fulano, Sujeito)
    Sujeito.close()


# Função de Carregar #
def Carregar():
    Sujeito = open('Progress.pck', 'rb')
    Var.Fulano = pickle.load(Sujeito)
    Sujeito.close()

# Programa Principal #

# Primeiro carregamos o último sujeito armazenado #
Carregar() 

# Depois imprimimos para ver se era esse mesmo #
print('Sujeito anterior:')
print('Nome: {}'.format(Var.Fulano.Nome))
print('Idade: {}'.format(Var.Fulano.Sobrenome))
print('Nome: {}'.format(Var.Fulano.Idade))

# Agora inserimos um novo sujeito #
print('Vamos definir um novo sujeito!')
Var.Fulano.Nome = input('Insira o nome: ')
Var.Fulano.Nome = input('Insira o sobrenome: ')
Var.Fulano.Nome = input('Insira a idade: ')

# Salvamos o sujeito #
Salvar()

# Essa parte foi só uma 'prova real' que eu inventei #
# Como teste, eu redefino Fulano e dou carregar #
# Se aparecer o que eu armazenei ao invés da mensagem de erro, deu certo! #
print('Vamos definir um novo sujeito!')
Var.Fulano.Nome = ('Se isso aparecer, deu errado.')
Var.Fulano.Nome = ('Se isso aparecer, deu errado.')
Var.Fulano.Nome = ('Se isso aparecer, deu errado.')

# Carregamos o novo sujeito #
Carregar()

# Imprimimos o novo sujeito #
print('Sujeito anterior:')
print('Nome: {}'.format(Var.Fulano.Nome))
print('Idade: {}'.format(Var.Fulano.Sobrenome))
print('Nome: {}'.format(Var.Fulano.Idade))

I had no problem with that code. It worked right as I expected, but then I kept thinking about the file that the Pickle module creates to store the subject (in this case, the file 'Subject.pck') and what happens to the stored information, because, depending, maybe this code gives me problems later on as I store new 'Fulanos'.

I mean, when I save Pessoa Fulano (I give the pickle.dump) and then save Pessoa Fulano again (I give another pickle.dump) with new information, what happens? Is the previous one still stored there? Is it replaced? If you keep doing this the Fulani will clog the 'Subject.pck' file and it will get huge? How do I manage it?

If anyone knows and can explain to me, I’d really appreciate it!

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.