Trwałość danych w Pythonie - serializacja obiektów

Wbudowany obiekt pliku Pythona zwracany przez wbudowaną funkcję open () języka Python ma jedną ważną wadę. Po otwarciu w trybie „w” metoda write () akceptuje tylko obiekt typu string.

Oznacza to, że jeśli masz dane reprezentowane w dowolnej postaci niebędącej ciągiem, obiekt albo wbudowanych klas (liczby, słownik, listy lub krotki) lub innych klas zdefiniowanych przez użytkownika, nie można ich zapisać bezpośrednio do pliku. Przed napisaniem musisz przekonwertować go na reprezentację ciągu.

numbers=[10,20,30,40]
   file=open('numbers.txt','w')
   file.write(str(numbers))
   file.close()

W przypadku pliku binarnego argument do write()metoda musi być obiektem bajtowym. Na przykład lista liczb całkowitych jest konwertowana na bajty wedługbytearray() funkcji, a następnie zapisywane do pliku.

numbers=[10,20,30,40]
   data=bytearray(numbers)
   file.write(data)
   file.close()

Aby odczytać dane z pliku w odpowiednim typie danych, należy wykonać odwrotną konwersję.

file=open('numbers.txt','rb')
   data=file.read()
   print (list(data))

Ten typ ręcznej konwersji obiektu na format ciągowy lub bajtowy (i odwrotnie) jest bardzo uciążliwy i żmudny. Możliwe jest przechowywanie stanu obiektu Pythona w postaci strumienia bajtów bezpośrednio do pliku lub strumienia pamięci i przywracanie do jego pierwotnego stanu. Ten proces nazywa się serializacją i deserializacją.

Wbudowana biblioteka Pythona zawiera różne moduły do ​​serializacji i procesu deserializacji.

Sr.No. Nazwa i opis
1

pickle

Biblioteka serializacji specyficzna dla języka Python

2

marshal

Biblioteka używana wewnętrznie do serializacji

3

shelve

Trwałość obiektów w Pythonie

4

dbm

biblioteka oferująca interfejs do bazy danych Unix

5

csv

biblioteka do przechowywania i pobierania danych Pythona do formatu CSV

6

json

Biblioteka do serializacji do uniwersalnego formatu JSON