Python Data Persistence - Nesne Serileştirme
Python'un yerleşik open () işlevi tarafından döndürülen Python'un yerleşik dosya nesnesinin önemli bir eksikliği vardır. "W" moduyla açıldığında, write () yöntemi yalnızca dize nesnesini kabul eder.
Yani, herhangi bir dize olmayan biçimde temsil edilen verileriniz varsa, yerleşik sınıflardaki nesneler (sayılar, sözlükler, listeler veya gruplar) veya diğer kullanıcı tanımlı sınıflar, doğrudan dosyaya yazılamaz. Yazmadan önce, onu dizgi temsiline dönüştürmeniz gerekir.
numbers=[10,20,30,40]
file=open('numbers.txt','w')
file.write(str(numbers))
file.close()
İkili bir dosya için argüman write()yöntem bir bayt nesnesi olmalıdır. Örneğin, tamsayıların listesi bayta dönüştürülür.bytearray() işlevi ve sonra dosyaya yazılır.
numbers=[10,20,30,40]
data=bytearray(numbers)
file.write(data)
file.close()
Dosyadan verileri ilgili veri türünde geri okumak için ters dönüştürme yapılması gerekir.
file=open('numbers.txt','rb')
data=file.read()
print (list(data))
Bir nesnenin dizgeye veya bayt biçimine (ve tersi) bu tür manuel dönüştürmesi çok külfetli ve sıkıcıdır. Bir Python nesnesinin durumunu bayt akışı biçiminde doğrudan bir dosyaya veya bellek akışına depolamak ve orijinal durumuna geri getirmek mümkündür. Bu sürece serileştirme ve serileştirme adı verilir.
Python'un yerleşik kütüphanesi, serileştirme ve seriyi kaldırma işlemi için çeşitli modüller içerir.
Sr.No. | İsim & Açıklama |
---|---|
1 | pickle Python'a özgü serileştirme kitaplığı |
2 | marshal Serileştirme için dahili olarak kullanılan kitaplık |
3 | shelve Pythonic nesne kalıcılığı |
4 | dbm Unix veritabanı için kütüphane sunan arabirim |
5 | csv Python verilerinin CSV formatında depolanması ve alınması için kütüphane |
6 | json Evrensel JSON biçimine serileştirme kitaplığı |