Como conservar objetos em Python

How Pickle Objects Python



Todos os dados podem ser serializados e desserializados em Python usando JSON e módulo Pickle. Antes de armazenar qualquer dado em um arquivo, os objetos Python são serializados usando o módulo pickle. Os objetos Python são convertidos em fluxos de caracteres usando este módulo. Quando o usuário deseja recuperar os dados do arquivo para usar outro script Python, os dados do arquivo são desserializados pelo módulo pickle. Os recursos do módulo pickle e como este módulo pode ser usado no script Python para serialização e desserialização são descritos neste tutorial.

Características do Pickle:

  • Ele é projetado principalmente para uso com script Python.
  • É usado para salvar os objetos Python entre os processos.
  • Ele mantém o controle de todos os objetos serializados e o objeto que foi serializado antes não será serializado novamente.
  • Ele pode salvar e restaurar a instância da classe de forma transparente.
  • Não é seguro usar. Portanto, não é melhor retirar dados de uma fonte desconhecida.

dump () para serialização:

A função dump () é usada para converter os dados do objeto em um fluxo de caracteres antes de salvar em um arquivo. Esta função pode receber três argumentos. Os primeiros dois argumentos são obrigatórios e o último argumento é opcional. O primeiro argumento leva um objeto de dados que precisa ser serializado. O segundo argumento pega o objeto manipulador de arquivo desse arquivo onde os dados pckled serão armazenados. O último argumento leva o nome do protocolo.







Sintaxe:



jogar fora(data_object,file_object, [protocolo])

load () para desserialização:

A função load () é usada para converter dados de fluxo de caracteres do arquivo em um objeto Python. Esta função contém apenas um argumento e o objeto manipulador de arquivo do arquivo passa como o valor do argumento de onde os dados serão recuperados.



Sintaxe:





carga(file_object)

Escolha um objeto simples para armazenar em um arquivo

Crie um arquivo chamado pickle1.py com o seguinte script python. No script a seguir, um objeto de dados denominado dataObject é declarado para armazenar cinco nomes de idiomas iterando o loop for. Em seguida, o método open () é usado para atribuir um manipulador de arquivos para a criação de um arquivo binário denominado línguas. jogar fora() função é usada aqui para serializar os dados de dataObject e armazene-o no línguas Arquivo. Se a serialização for feita corretamente, uma mensagem Dados são serializados será impressa.

# Importe o módulo pickle
importar salmoura

# Declare o objeto para armazenar dados
dataObject= []

# Repita o loop for 5 vezes e pegue os nomes dos idiomas
paranno faixa(5):
cru= entrada('Digite um nome de idioma:')

dataObject.acrescentar(cru)

# Abra um arquivo para gravar dados
file_handler= abrir('línguas', 'wb')

# Despeja os dados do objeto no arquivo
salmoura.jogar fora(dataObject,file_handler)

# feche o gerenciador de arquivos para liberar os recursos
file_handler.fechar()

# Imprimir mensagem
imprimir('Os dados são serializados')

Saída:



Depois de executar o script, ele terá cinco nomes de idiomas como entrada.

Retirar dados de um arquivo

retirar os dados é o oposto de retirar os dados. Crie um arquivo chamado pickle2.py com o seguinte script python. Aqui, abrir() método é usado para abrir o arquivo binário denominado línguas , criado no exemplo anterior. carga() função é usada para retirar os dados do arquivo e armazená-los na variável dataObject . Próximo, para loop é usado para iterar os dados do dataObject e imprima no terminal.

# Importe o módulo pickle
importar salmoura

# Abra um gerenciador de arquivos para ler um arquivo de onde os dados serão carregados
file_handler= abrir('línguas', 'rb')

# Carregue os dados do arquivo após a desserialização
dataObject= salmoura.carga(file_handler)

# Feche o gerenciador de arquivos
file_handler.fechar()

# Imprimir mensagem
imprimir('Dados após desserialização')

# Itere o loop para imprimir os dados após a desserialização
parahorasnodataObject:
imprimir('O valor dos dados:',horas)

Saída:

A seguinte saída aparecerá após a execução do script.

Selecione um objeto de classe em um arquivo

Como um objeto de classe pode ser conservado é mostrado no exemplo a seguir. Crie um arquivo chamado pickle3.py com o seguinte script. Aqui, Empregado classe é declarada para atribuir três valores de dados de um funcionário. Em seguida, um objeto de manipulador de arquivo denominado fileHandler é criado para abrir um arquivo para gravação. Depois de inicializar o objeto de classe, os dados são serializados usando jogar fora() função e armazenado no arquivo chamado EmployeeData . Se o arquivo for criado corretamente, a mensagem, Os dados são serializados irá imprimir.

# Módulo de importação de pickle
importar salmoura

# Declare a classe de funcionário para armazenar o valor
classeEmpregado:
def __iniciar__(auto,nome, o email,publicar):
auto.nome =nome
auto.o email = o email
auto.publicar =publicar

#Create employee object
empObject=Empregado('Farheen', '[email protegido]', 'Gerente')

# Abrir arquivo para armazenar dados
fileHandler= abrir('employeeData', 'wb')

# Salve os dados no arquivo
salmoura.jogar fora(empObject,fileHandler)

# Feche o arquivo
fileHandler.fechar()

# Imprimir mensagem
imprimir('Os dados são serializados')

Saída:

A seguinte saída aparecerá após a execução do script.

Retirar dados para um objeto de classe

Uma classe com as propriedades e métodos necessários exigirá a declaração para recuperar os dados de um arquivo para um objeto de classe. Crie um arquivo chamado pickle4.py com o seguinte código. Empregado classe é definida aqui para recuperar os dados. fileObject variável é usada para abrir o arquivo, EmployeeData para ler. Próximo, carga() função é usada para armazenar os dados no objeto de classe após a desserialização. exibição() função do Empregado class é chamado para imprimir os valores de dados do objeto de classe.

# Módulo de importação de pickle
importar salmoura

# Declare que a classe de funcionários lê e imprime dados de um arquivo
classeEmpregado:
def __iniciar__(auto,nome, o email,publicar):
auto.nome =nome
auto.o email = o email
auto.publicar =publicar

defexibição(auto):
imprimir('Informação do empregado:')
imprimir('Nome :', auto.nome)
imprimir('O email :', auto.o email)
imprimir('Publicar :', auto.publicar)

# Abra o arquivo para leitura
fileObject= abrir('employeeData', 'rb')

# Retire os dados
empregado= salmoura.carga(fileObject)

# Fechar arquivo
fileObject.fechar()

#print the dataframe
empregado.exibição()

Saída:

A seguinte saída aparecerá após a execução do script.

Conclusão

O módulo Pickle é um recurso útil do Python para serialização e desserialização de dados. Depois de concluir os exemplos mostrados neste tutorial, a transferência de dados de um script Python para outro script Python será mais fácil para qualquer pessoa.