Jak używać Pickle do zapisywania obiektów w Pythonie

click fraud protection

Pickle, który jest domyślnie częścią biblioteki Python, jest ważnym modułem, gdy potrzebujesz trwałości między sesjami użytkowników. Jako moduł, pickle zapewnia zapisywanie obiektów Pythona między procesami.

Czy programujesz dla Baza danych, gra, forum lub inna aplikacja, która musi zapisywać informacje między sesjami, marynata jest przydatna do zapisywania identyfikatorów i ustawień. Moduł piklowania może przechowywać takie dane, jak typy danych, takie jak logiczne, łańcuchy i tablice bajtów, listy, słowniki, funkcje i wiele innych.

Uwaga: Pojęcie wytrawiania jest również znane jako serializacja, marszowanie i spłaszczanie. Chodzi jednak zawsze o to samo - o zapisanie obiektu w pliku do późniejszego pobrania. Wytrawianie osiąga to, pisząc obiekt jako jeden długi strumień bajtów.

Przykładowy kod pikle w Pythonie

Aby zapisać obiekt do pliku, użyj kodu w następującej składni:

marynata importowa 
object = Object ()
moduł obsługi plików = otwarty (nazwa pliku, „w”)
pickle.dump (obiekt, moduł obsługi plików)
instagram viewer

Oto jak wygląda prawdziwy przykład:

marynata importowa 
import matematyki
object_pi = math.pi
file_pi = open ('filename_pi.obj', 'w')
pickle.dump (object_pi, file_pi)

Ten fragment zapisuje treść object_pi do pliku handler file_pi, który z kolei jest powiązany z plikiem nazwa_pliku.obj w katalogu wykonania.

Aby przywrócić wartość obiektu do pamięci, załaduj obiekt z pliku. Zakładając, że marynata nie została jeszcze zaimportowana do użytku, zacznij od jej zaimportowania:

marynata importowa 
moduł obsługi plików = otwarty (nazwa pliku, „r”)
object = pickle.load (moduł obsługi plików)

Poniższy kod przywraca wartość pi:

marynata importowa 
file_pi2 = open ('filename_pi.obj', 'r')
object_pi2 = pickle.load (file_pi2)

Obiekt jest następnie gotowy do użycia, tym razem jako object_pi2. Możesz oczywiście ponownie użyć oryginalnych nazw, jeśli wolisz. W tym przykładzie użyto odrębnych nazw dla jasności.

O czym należy pamiętać o Pickle

Podczas korzystania z modułu marynowanego należy pamiętać o następujących kwestiach:

  • Protokół piklowania jest specyficzny dla Pythona - nie ma gwarancji zgodności z wieloma językami. Najprawdopodobniej nie możesz przenieść informacji, aby były przydatne w Perlu, PHP, Javie lub innych językach.
  • Nie ma również gwarancji zgodności między różnymi wersjami Pythona. I Występuje niekompatybilność, ponieważ nie każda struktura danych w języku Python może być serializowana przez moduł.
  • Domyślnie używana jest najnowsza wersja protokołu marynowania. Pozostaje tak, chyba że zmienisz go ręcznie.

Wskazówka: Dowiedz się również jak używać shelve do zapisywania obiektów w Pythonie dla innej metody utrzymania ciągłości obiektu.

instagram story viewer