Python 3'e bir dosya dökmek için turşu kullanıyorum ve dosyayı python 2'ye yüklemek için turşu kullanıyorum, ValueError beliriyor.
Yani, python 2 pickle python 3 pickle tarafından atılan dosyayı yükleyemiyor mu?
Eğer istersem Nasıl yapılır?
Python 3'e bir dosya dökmek için turşu kullanıyorum ve dosyayı python 2'ye yüklemek için turşu kullanıyorum, ValueError beliriyor.
Yani, python 2 pickle python 3 pickle tarafından atılan dosyayı yükleyemiyor mu?
Eğer istersem Nasıl yapılır?
Yanıtlar:
Turşu veriyi Python 3'te daha düşük bir protokol numarasıyla yazmalısınız. Python 3, numarayla yeni bir protokol başlattı 3
(ve bunu varsayılan olarak kullanır), bu nedenle 2
Python 2 tarafından okunabilen bir değere geri dönün .
protocol
Parametreyi kontrol edin pickle.dump
. Ortaya çıkan kodunuz şöyle görünecektir.
pickle.dump(your_object, your_file, protocol=2)
Hiçbir yoktur protocol
parametre pickle.load
nedeniyle pickle
dosyadan protokolünü belirleyebilir.
Pickle protocols
, verilerinizi ikili bir akışa dönüştürmek için farklı kullanır .
Piton 2'de bulunmaktadır 3 farklı protokoller ( 0
, 1
, 2
) ve varsayılan 0
.
Piton 3'te bulunmaktadır 5 farklı protokoller ( 0
, 1
, 2
, 3
, 4
) ve varsayılan 3
.
3
Verileri python 2'ye yükleyebilmek için python 3'te daha düşük bir protokol belirlemelisiniz. protocol
Parametreyi çağırırken belirtebilirsiniz pickle.dump
.
5
Python 3.8'de tanıtılmış olan ve önceki sürümlerle uyumlu olmayan bir protokol var.