String’ler kolayca bir dosyaya yazılabilir veya bir dosyadan okunabilir.Bu işlem sayılar söz konusu olunca biraz daha uğraş gerektirir çünkü read( ) methodu sadece string döner.Bize lazım olan string.atoi() gibi bir fonksiyondur.Bu fonksiyon ’123′ gibi bir string alır ve bunun sayısal değeri olan 123′ü döndürür. Ama listeler , sözlükler , sınıf örnekleri gibi daha kompleks data tipleriyle uğraşırken işler biraz daha karışıyor.
Kullanıcıları , bu tür verileri saklarken,sürekli kod yazma ve debug etme işleminden kurtarmak için Python bize standart kütüphanelerde da yer alan Pickle modülünü sunmuştur.Bu herhangi bir Python objesini alan ve bunu string olarak çevirip saklayan bir modüldür.Bu işleme pickling adı verilir.Kaydedilen obje dosyasının , string halden programa geri çağrılmasına da unpickling işlemi denir. Pickling ve unpickling işlemleri arasında gerçekleşen obje – string dönüşümü , bir dosya ya da klasöre kaydedilerek veya internet bağlantısı üzerinden başka bir bi makineye gönderilerek saklanır.
Eğer elinizde x objesi varsa ve bunu f adındaki bir dosyaya yazmak istiyorsanız şu dizilimi izlemelisiniz.
pickle.dump(x, f)
Bu x objesini geri okumak için f dosyasını açmak isterseniz :
x = pickle.load(f)
(Eğer birden fazla obje dosyasını açmak istiyorsanız veya obje dosyasının üstüne yazmak istemiyorsanız bunun daha farklı yöntemleri de vardır.Burdan pickle modulu içeriğine ulaşabilirisiniz)
Python’da Pickle modülü , objeleri saklamanın standart yoludur.Bu saklanan obje dosyalarını başka bir program tekrar kullanabilir,değiştirebilir.Anlayacağınız pickle modülünün geniş bir kullanım alanı vardır.
Çeviri:http://docs.python.org/release/1.5.1p1/tut/pickle.html
*Not:Hata varsa veya eklemek istediğiniz bir konu varsa lütfen mail atın.
Bu yazı toplam 211 kere görüntülenmiştir.





Ayrıca bir de cPickle modülü var. Pickler ve Unpickler classlarına subclass yazmadığımız her durumda pickle modülünden çok çok hızlı olması nedeniyle cPickle modülünü tercih ediyoruz. cPickle kullandığımızda bu classlara subclass yazamıyoruz çünkü cPickle adından anladığınız üzere C’de yazılmış bir modül ve pickle’da class’lar olan Pickler ve Unpickler, cPickle’da fonksiyon.
cPickle’ın pickle’dan kullanım olarak farkı yok. pickle modülüyle aynı arayüze sahip, yâni pickle’dan cPickle’a geçmek için “import pickle” ifadenizi “import cPickle” olarak değiştirmek yeterli.
Ekleme için teşekkürler
bir şey merak ediyorum, pickle modülünü kullandığımız bir programı stand-alone olarak (örneğin py2exe ile .exe yapıp) kullanabilir miyiz ? python’un pickle dosyalarını özel bi şekilde sakladığını okudum da, python yüklenmeden çalıştırılamaz mı ?