Ich verwende pickle, um eine Datei auf Python 3 zu sichern, und ich verwende pickle, um die Datei auf Python 2 zu laden. Der ValueError wird angezeigt.
Also, Python 2 Pickle kann die von Python 3 Pickle abgelegte Datei nicht laden?
Wenn ich es will Wie macht man?
python
python-3.x
python-2.7
pickle
valueerror
Aleeee
quelle
quelle
Antworten:
Sie sollten die eingelegten Daten mit einer niedrigeren Protokollnummer in Python 3 schreiben. Python 3 hat ein neues Protokoll mit der Nummer eingeführt
3
(und verwendet es standardmäßig). Wechseln Sie also zurück zu einem Wert, der2
von Python 2 gelesen werden kann.Überprüfen Sie den
protocol
Parameter inpickle.dump
. Ihr resultierender Code sieht folgendermaßen aus.Es gibt keinen
protocol
Parameter in,pickle.load
dapickle
das Protokoll aus der Datei ermittelt werden kann.quelle
Pickle verwendet different
protocols
, um Ihre Daten in einen Binärstrom umzuwandeln.In Python 2 gibt es 3 verschiedene Protokolle (
0
,1
,2
) und der Standard ist0
.In Python 3 gibt es 5 verschiedene Protokolle (
0
,1
,2
,3
,4
) und der Standard ist3
.Sie müssen in Python 3 ein Protokoll angeben, das niedriger ist als
3
, um die Daten in Python 2 laden zu können. Sie können denprotocol
Parameter beim Aufrufen angebenpickle.dump
.quelle
5
, das auch in Python 3.8 eingeführt wurde und nicht mit früheren Versionen kompatibel ist.