ValueError: Protocolo Pickle no compatible: 3 en Python

Fariba Laiq 15 febrero 2024
  1. Decapado y decapado en Python
  2. Causa del ValueError: protocolo pickle no compatible: 3 en Python
  3. Solucione el ValueError: protocolo pickle no compatible: 3 en Python
ValueError: Protocolo Pickle no compatible: 3 en Python

Cada lenguaje de programación encuentra muchos errores. Algunos ocurren en tiempo de compilación, otros en tiempo de ejecución.

Este artículo discutirá el ValueError: protocolo pickle no compatible: 3.

Decapado y decapado en Python

Pickling es un método para convertir un objeto de Python (list, dict, etc.) en un flujo de caracteres. Se supone que este flujo de caracteres incluye todos los datos necesarios para recrear el objeto en otra secuencia de comandos de Python utilizando un proceso inverso llamado Unpickling.

El módulo pickle hace decapado y decapado en Python.

En el siguiente código, hemos decapado y decapado una lista. Hemos creado una lista de nombres y abierto el archivo usando el modo wb.

La w creará un archivo si aún no está presente, y la b escribirá los datos (lista) en el archivo en un flujo de bytes. Invocamos el método dump() especificando la lista a volcar y el nombre del archivo en el que escribir los datos en forma de bytes.

De manera similar, descomprimimos los datos leyéndolos primero del archivo en modo rb. Usando el método load(), leemos los bytes del archivo y los volvemos a convertir al objeto de lista.

Código de ejemplo:

# Python 3.x
import pickle

my_list = ["Jhon", "Alia", "Sam", "Chris"]
with open("my_file.txt", "wb") as f:
    pickle.dump(my_list, f)
my_file = open("my_file.txt", "rb")
data = pickle.load(my_file)
print(data)

Salida (Ejecutar en el Jupyter Notebook de Anaconda):

pepinillo en python 3

Causa del ValueError: protocolo pickle no compatible: 3 en Python

A veces en el proceso de decapado nos encontramos con el ValueError: protocolo de decapado no soportado: 3. Esto se debe a los protocolos de decapado incompatibles utilizados durante el decapado y el decapado de los datos.

Python 3 introdujo y usó el protocolo 3 de forma predeterminada para seleccionar y eliminar los datos si no especificamos el protocolo. Si decapamos y recuperamos los datos utilizando diferentes protocolos, nos enfrentaremos a este error, como se muestra en el código a continuación.

Python 2 usó el protocolo 0 de forma predeterminada y Python 3 usó el protocolo 3. Por lo tanto, este error se enfrenta principalmente cuando seleccionamos y desinstalamos los datos en diferentes versiones de Python sin especificar correctamente la versión del protocolo.

Código de ejemplo:

Pitón 3:

# Python 3.x
import pickle

my_list = ["Jhon", "Alia", "Sam", "Chris"]
with open("my_file.txt", "wb") as f:
    pickle.dump(my_list, f)

Pitón 2:

# Python 2.x
import pickle

my_file = open("my_file.txt", "rb")
data = pickle.load(my_file)
print(data)

Producción:

error de protocolo pickle no compatible

Solucione el ValueError: protocolo pickle no compatible: 3 en Python

Para resolver este error, debemos especificar el protocolo pickle menor que 3 cuando volcamos los datos usando Python 3 para cargar estos datos en Python 2. Porque Python 2 no admite protocolos mayores que 2.

Código de ejemplo:

# Python 3.x
import pickle

my_list = ["Jhon", "Alia", "Sam", "Chris"]
with open("my_file.txt", "wb") as f:
    pickle.dump(my_list, f, protocol=2)

Código de ejemplo:

# Python 2.x
import pickle

my_file = open("my_file.txt", "rb")
data = pickle.load(my_file)
print(data)

Producción:

Arreglar el protocolo pickle no compatible

Aquí, u antes de las cadenas representa Unicode.

Fariba Laiq avatar Fariba Laiq avatar

I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.

LinkedIn

Artículo relacionado - Python Error