ValueError: Nicht unterstütztes Pickle-Protokoll: 3 in Python
- Beizen und Unpickling in Python
-
Ursache des
ValueError: unsupported pickle protocol: 3
in Python -
Korrigieren Sie den
ValueError: unsupported pickle protocol: 3
in Python
Jede Programmiersprache trifft auf viele Fehler. Einige treten zur Kompilierzeit auf, andere zur Laufzeit.
Dieser Artikel behandelt den ValueError: unsupported pickle protocol: 3
.
Beizen und Unpickling in Python
Pickling
ist eine Methode, um ein Python-Objekt (list
, dict
, etc.) in einen Zeichenstrom umzuwandeln. Dieser Zeichenstrom soll alle Daten enthalten, die erforderlich sind, um das Objekt in einem anderen Python-Skript mit einem umgekehrten Prozess namens Unpickling
neu zu erstellen.
Das pickle
-Modul erledigt das Beizen und Entpicken in Python.
Im folgenden Code haben wir eine Liste gepickt und unpicked. Wir haben eine Namensliste erstellt und die Datei im wb
-Modus geöffnet.
Das w
erstellt eine Datei, falls sie noch nicht vorhanden ist, und das b
schreibt die Daten(liste) in einem Bytestrom in die Datei. Wir haben die Methode dump()
aufgerufen, die die zu dumpende Liste und den Dateinamen angibt, in den die Daten in Form von Bytes geschrieben werden sollen.
In ähnlicher Weise haben wir die Daten entpickt, indem wir sie zuerst im rb
-Modus aus der Datei gelesen haben. Mit der Methode load()
lesen wir die Bytes aus der Datei und wandeln sie zurück in das Listenobjekt.
Beispielcode:
# 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)
Ausgabe (auf Anacondas Jupyter Notebook ausführen):
Ursache des ValueError: unsupported pickle protocol: 3
in Python
Manchmal sehen wir uns beim Entpicken mit dem ValueError: unsupported pickle protocol: 3
konfrontiert. Dies liegt an den inkompatiblen Beizprotokollen, die beim Beizen und Entpicken der Daten verwendet werden.
Python 3 hat standardmäßig Protokoll 3 eingeführt und verwendet, um die Daten zu picken und zu entfernen, wenn wir das Protokoll nicht angeben. Wenn wir die Daten mit unterschiedlichen Protokollen picken und unpicken, tritt dieser Fehler auf, wie im folgenden Code gezeigt.
Python 2 verwendete standardmäßig Protokoll 0 und Python 3 verwendete Protokoll 3. Dieser Fehler tritt also meistens auf, wenn wir die Daten in verschiedenen Python-Versionen picken und unpicken, ohne die Protokollversion korrekt anzugeben.
Beispielcode:
Python3:
# Python 3.x
import pickle
my_list = ["Jhon", "Alia", "Sam", "Chris"]
with open("my_file.txt", "wb") as f:
pickle.dump(my_list, f)
Python 2:
# Python 2.x
import pickle
my_file = open("my_file.txt", "rb")
data = pickle.load(my_file)
print(data)
Ausgang:
Korrigieren Sie den ValueError: unsupported pickle protocol: 3
in Python
Um diesen Fehler zu beheben, müssen wir das Pickle-Protokoll kleiner als 3
angeben, wenn wir die Daten mit Python 3 sichern, um diese Daten in Python 2 zu laden. Da Python 2 keine Protokolle größer als 2 unterstützt.
Beispielcode:
# 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)
Beispielcode:
# Python 2.x
import pickle
my_file = open("my_file.txt", "rb")
data = pickle.load(my_file)
print(data)
Ausgang:
Hier steht u
vor Strings für 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.
LinkedInVerwandter Artikel - Python Error
- Adresse wird bereits verwendet Fehler in Python
- AttributeError: __Exit__ in Python
- AttributeError: 'Dict'-Objekt hat kein Attribut 'Append' in Python
- AttributeError: 'NoneType'-Objekt hat kein Attribut 'Text' in Python
- AttributeError: Int-Objekt hat kein Attribut
- AttributeError: Modul Urllib hat keine Attributanforderung