SAMOUCZEK JĘZYKA PYTHON ROZDZIAŁY   
Rozdział 6: Wejście i wyjście

1: Ładniejsze formatowanie wyjścia - 2: Czytanie z i pisanie do plików - 3: Metody obiektów pliku - 4: Moduł pickle

Lekcja 4: Moduł pickle


Napisy mogą być w łatwy sposób zapisywane i czytane z pliku. Liczby wymagają trochę więcej wysiłku, bowiem metoda read() zwraca tylko napis, który musi być poddany działaniu takiej funkcji, jak string.atoi(), która pobiera napis w rodzaju '123' i zwraca wartość liczbową 123. W przypadku jednak, gdy chce się przechowywać w pliku bardziej złożone typy danych jak listy, słowniki lub instancje klas, jest to bardziej skomplikowane.

Python dostarcza standardowy moduł pickle, który zaoszczędza użytkownikom pisania i śledzenia kodu służącego do zachowywania skomplikowanych typów danych. Ten zadziwiający moduł potrafi wziąć na wejściu prawie każdy obiekt Pythona (nawet pewne formy kodu!) i przekształcić go w napis. Proces ten zwie się marynowaniem (ang. pickling). Rekonstruowanie obiektu z formy napisowej zwie się odmarynowaniem (ang. unpickling). Pomiędzy marynowaniem a odmarynowaniem, napis reprezentujący obiekt może zostać zapisany w pliku lub w innej danej, lub przesłany połączeniem sieciowym do oddalonego komputera.

Jeżeli istnieje obiekt x i obiekt pliku f, który został otwarty do pisania, to najprostszy sposób zamarynowania obiektu zajmuje jeden wiersz kodu:

pickle.dump(x, f)

Zakładając, że f jest obiektem pliku, który został otwarty do czytania, odmarynowanie przebiega następująco:

x = pickle.load(f)

(Istnieją warianty tego mechanizmu użyteczne w przypadku marynowania wielu obiektów, lub gdy nie chce się zapisać danych marynaty w pliku -- skonsultuj się z pełną dokumentacją dla modułu pickle).
pickle jest standardowym sposobem na uczynienie obiektów Pythona trwałymi i ponownie użytymi przez inne programy lub przyszłe wywołania tego samego programu: technicznym określeniem tego mechanizmu jest trwałość obiektu. Z powodu powszechnego użycia modułu pickle, wielu autorów piszących rozszerzenia do Pythona, dba o to, aby nowe typy danych, takie jak macierze, mogły być poprawnie zamarynowane i odmarynowane.

Strona główna - O Pythonie - Interpreter - Samouczek - Przykłady programów - Linki