Gurke , Lesen von Daten , die nicht unterstützte Gurke Protokoll: 3 python 2.7
Anfänger hier, möchte Lesen Sie in Daten mit der Endung p.
Mein code sieht wie folgt aus :
import pickle
training_file = "/home/sk/CarND-Traffic-Sign-Classifier-Project/train.p"
testing_file = "/home/sk/CarND-Traffic-Sign-Classifier-Project/test.p"
with open(training_file, mode='rb') as f:
train = pickle.load(f)
with open(testing_file, mode='rb') as f:
test = pickle.load(f)
Bekomme ich die folgende Fehlermeldung:
ValueError: nicht unterstützte Gurke Protokoll: 3
Kann mir jemand sagen, wie ich es beheben kann, entweder ändern-Protokoll oder das Einlesen der Daten auf eine andere Weise ?
- Ist es dein code ?
- Was fehlt ?
- Erhalten Sie diesen Fehler durch den Import pickle ?
- Ich habe meinen Beitrag korrigiert, ich bekomme es, wenn ich versuche, die Daten zu laden
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hatte das gleiche Problem als ich eine Gurke-Datei mit Python ist3 und dann versucht es zu laden in python2. Versuchen Sie, Ihr Programm mit Python ist3 oder versuchen, die Schaffung einer pickle-Datei mit python2.
Gurke verwendet verschiedene Protokolle, um konvertieren Sie Ihre Daten in einen binären Datenstrom.
In python 2 gibt es 3 verschiedene Protokolle (0, 1, 2), und der Standardwert ist 0.
In python 3 gibt es 5 verschiedene Protokolle (0, 1, 2, 3, 4) und die Standardeinstellung ist 3.
Sie müssen angeben, in python 3 ein Protokoll, geringer als 3 sein, um der Lage sein, die Daten zu laden, die in python 2. Sie können die Protokoll-parameter beim aufrufen der Gurke.dump.
Scheint es, als dieser Dateien wurde mit einem Protokoll >=3 (wahrscheinlich 3). So ist die einzige option, die Sie bekommen, ist, um es zu laden in python 3 und dann werfen Sie es mit einer geringeren Protokoll.
Offenbar Gurke Protokoll 3 verwendet wurde, in welcher python-3-code eingelegte Objekt. Sie können nicht unpickle mit Protokoll 3 in python 2. Man könnte aber schreiben Sie eine kurze python-3-Programm, lädt es und dann gibt es mit protocol = 2. Dann können Sie laden Sie in python 2.
https://docs.python.org/2/library/pickle.html#usage
https://github.com/zopefoundation/zodbpickle
Unter Python2 dieses Paket Gabeln sowohl für Python 2.7 ist der pickle und cPickle Module, hinzufügen von Unterstützung für das Protokoll 3 opcodes.