CodeGym /Curso Java /Python SELF PT /Serialização

Serialização

Python SELF PT
Nível 22 , Lição 0
Disponível

8.1 O que é serialização

Depois de aprender a trabalhar com arquivos, salvar e ler dados, chegou a hora de aprender a trabalhar com arquivos a sério. Hoje vamos começar a estudar serialização.

Serialização é o processo de transformar um objeto em uma sequência de bytes ou em um formato que pode ser salvo em um arquivo, transmitido pela rede ou armazenado em um banco de dados. Deserialização é o processo inverso, onde essa sequência de bytes é transformada de volta no objeto original.

Para salvar um objeto em um arquivo (ou transmiti-lo pela rede), é necessário transformá-lo em uma string (ou conjunto de bytes), que seja fácil de escrever em um arquivo (e ler do arquivo) ou transmitir pela rede.

Aqui estão 4 principais áreas onde a serialização é usada:

  • Salvar estado de objetos: Para guardar o estado de um objeto entre execuções do programa.
  • Transferência de dados: Para transmitir objetos através da rede entre diferentes componentes de um sistema ou entre diferentes sistemas.
  • Cache: Para armazenar objetos no cache para acesso rápido.
  • Bancos de dados: Para armazenar estruturas de dados complexas em bancos de dados.

Existem muitas bibliotecas que lidam com serialização, cada uma criada para suas próprias necessidades. Vamos nos familiarizar com cinco delas, e com duas esse conhecimento será bem detalhado.

Vamos dar uma olhada nas mais populares entre elas:

  • Módulo pickle
  • Módulo json
  • Módulo yaml
  • Módulo marshal
  • Módulo shelve

A seguir, um breve resumo de cada um:

8.2 Módulo pickle

pickle é um módulo embutido para serialização e deserialização de objetos Python. Ele permite salvar e restaurar praticamente qualquer objeto Python, incluindo classes personalizadas.

Exemplo de uso do pickle:


import pickle

# Exemplo de objeto para serialização
data = {'name': 'Alice', 'age': 30, 'is_student': False}
            
# Serialização do objeto em arquivo
with open('data.pkl', 'wb') as file:
    pickle.dump(data, file)
            
# Deserialização do objeto do arquivo
with open('data.pkl', 'rb') as file:
    loaded_data = pickle.load(file)
            
print(loaded_data)

8.3 Módulo json

json é um módulo embutido para trabalhar com JSON (JavaScript Object Notation). JSON é um formato de texto que é usado para troca de dados entre cliente e servidor.

Exemplo de uso do json:


import json

# Exemplo de objeto para serialização
data = {'name': 'Bob', 'age': 25, 'is_student': True}
            
# Serialização do objeto em string JSON
json_string = json.dumps(data)
print(json_string)
            
# Serialização do objeto em arquivo JSON
with open('data.json', 'w') as file:
    json.dump(data, file)
            
# Deserialização do objeto da string JSON
loaded_data = json.loads(json_string)
print(loaded_data)
            
# Deserialização do objeto do arquivo JSON
with open('data.json', 'r') as file:
    loaded_data = json.load(file)
print(loaded_data)

8.4 Módulo yaml

yaml (YAML Ain't Markup Language) é um formato de serialização de dados legível por humanos. Para trabalhar com YAML em Python, é usada a biblioteca externa PyYAML.

Exemplo de uso do yaml:


import yaml

# Exemplo de objeto para serialização
data = {'name': 'Carol', 'age': 27, 'is_student': False}
            
# Serialização do objeto em string YAML
yaml_string = yaml.dump(data)
print(yaml_string)
            
# Serialização do objeto em arquivo YAML
with open('data.yaml', 'w') as file:
    yaml.dump(data, file)
            
# Deserialização do objeto da string YAML
loaded_data = yaml.load(yaml_string, Loader=yaml.FullLoader)
print(loaded_data)
            
# Deserialização do objeto do arquivo YAML
with open('data.yaml', 'r') as file:
    loaded_data = yaml.load(file, Loader=yaml.FullLoader)
print(loaded_data)

8.5 Módulo marshal

marshal é um módulo embutido para a serialização de objetos Python, que é usado para serializar código Python. Ele é mais rápido que pickle, mas suporta menos tipos de objetos e não é tão flexível.

Exemplo de uso do marshal:


import marshal

# Exemplo de objeto para serialização
data = {'name': 'Dave', 'age': 35, 'is_student': True}

# Serialização do objeto em arquivo
with open('data.marshal', 'wb') as file:
    marshal.dump(data, file)
            
# Deserialização do objeto do arquivo
with open('data.marshal', 'rb') as file:
    loaded_data = marshal.load(file)
            
print(loaded_data)

8.6 Módulo shelve

shelve é um módulo embutido que oferece uma forma simples de salvar objetos Python em arquivos com armazenamento baseado em chave, semelhante a um dicionário.

Exemplo de uso do shelve:


import shelve

# Exemplo de objeto para serialização
data = {'name': 'Eve', 'age': 28, 'is_student': False}
            
# Serialização do objeto em arquivo
with shelve.open('data.shelve') as db:
    db['person'] = data
            
# Deserialização do objeto do arquivo
with shelve.open('data.shelve') as db:
    loaded_data = db['person']
            
print(loaded_data)

E embora os próprios módulos e formatos de armazenamento de dados sejam diferentes, o trabalho com eles do ponto de vista do programador é muito parecido. A seguir, vamos analisar mais detalhadamente o trabalho com o módulo pickle e módulo json.

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION