ValueError: desteklenmeyen turşu protokolü: 3, python2 pickle python 3 pickle tarafından atılan dosyayı yükleyemiyor mu?


101

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?


5
Önceden yazılmış turşu dosyalarıyla sıkışıp
kaldıysanız

Yanıtlar:


158

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 2Python 2 tarafından okunabilen bir değere geri dönün .

protocolParametreyi kontrol edin pickle.dump. Ortaya çıkan kodunuz şöyle görünecektir.

pickle.dump(your_object, your_file, protocol=2)

Hiçbir yoktur protocolparametre pickle.loadnedeniyle pickledosyadan protokolünü belirleyebilir.


55

Pickle protocols, verilerinizi ikili bir akışa dönüştürmek için farklı kullanır .

3Verileri python 2'ye yükleyebilmek için python 3'te daha düşük bir protokol belirlemelisiniz. protocolParametreyi çağırırken belirtebilirsiniz pickle.dump.


11
Sadece ileride başvurmak için, görünüşe göre 5Python 3.8'de tanıtılmış olan ve önceki sürümlerle uyumlu olmayan bir protokol var.
Farzad Abdolhosseini

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.