ValueError: Protocolo Pickle no compatible: 3 en Python
- Decapado y decapado en Python
-
Causa del
ValueError: protocolo pickle no compatible: 3
en Python -
Solucione el
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):
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:
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:
Aquí, u
antes de las cadenas representa Unicode.
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.
LinkedInArtículo relacionado - Python Error
- Administrar fallas de segmentación en Python
- Archivo <Stdin>, Línea 1, en <Módulo> Error en Python
- Arreglar AttributeError: el objeto 'generador' no tiene atributo 'siguiente' en Python
- Arreglar el comando cl.exe falló: no existe tal archivo o directorio en Windows
- Arreglar NameError: la variable no está definida en Python
- Arreglar Socket.Gaierror: [Errno 8] Nodename ni Servname proporcionado, o desconocido en Python