Jak zamarynować obiekty w Pythonie

How Pickle Objects Python



Wszelkie dane można serializować i deserializować w języku Python za pomocą modułu JSON i Pickle. Przed przechowywaniem jakichkolwiek danych w pliku, obiekty Pythona są serializowane za pomocą modułu pickle. Za pomocą tego modułu obiekty Pythona są konwertowane na strumienie znaków. Gdy użytkownik chce pobrać dane z pliku w celu użycia innego skryptu Pythona, dane z pliku są deserializowane przez moduł pickle. Funkcje modułu pickle i sposób użycia tego modułu w skrypcie Pythona do serializacji i deserializacji są opisane w tym samouczku.

Funkcje marynaty:

  • Jest przeznaczony głównie do użycia w skrypcie Pythona.
  • Służy do zapisywania obiektów Pythona pomiędzy procesami.
  • Śledzi wszystkie serializowane obiekty, a obiekt, który jest wcześniej serializowany, nie będzie ponownie serializowany.
  • Może w sposób przezroczysty zapisywać i przywracać instancję klasy.
  • Nie jest bezpieczny w użyciu. Nie lepiej więc wydobywać dane z nieznanego źródła.

dump() dla serializacji:

Funkcja dump() służy do konwersji danych obiektu na strumień znaków przed zapisaniem w pliku. Ta funkcja może przyjmować trzy argumenty. Pierwsze dwa argumenty są obowiązkowe, a ostatni argument opcjonalny. Pierwszy argument przyjmuje obiekt danych, który wymaga serializacji. Drugi argument przyjmuje obiekt obsługi pliku tego pliku, w którym będą przechowywane paczkowane dane. Ostatni argument przyjmuje nazwę protokołu.







Składnia:



wysypisko(obiekt_danych,file_object, [protokół])

load() dla deserializacji:

Funkcja load() służy do konwersji danych strumienia znaków z pliku na obiekt Pythona. Ta funkcja zawiera tylko jeden argument, a obiekt obsługi pliku plik przekazuje jako wartość argumentu, z którego zostaną pobrane dane.



Składnia:





Załaduj(file_object)

Marynowanie prostego obiektu do przechowywania w pliku

Utwórz plik o nazwie marynata1.py z następującym skryptem Pythona. W poniższym skrypcie obiekt danych o nazwie obiekt danych zadeklarowano przechowywanie pięciu nazw języków przez iterację pętli for. Następnie metoda open() służy do przypisania obsługi pliku do utworzenia pliku binarnego o nazwie Języki. wysypisko() funkcja jest tutaj używana do serializacji danych z obiekt danych i przechowuj go w Języki plik. Jeśli serializacja zostanie wykonana prawidłowo, zostanie wydrukowany komunikat Dane są serializowane.

# Zaimportuj moduł marynowania
import marynata

# Zadeklaruj obiekt do przechowywania danych
obiekt danych= []

# Powtórz pętlę for 5 razy i weź nazwy języków
dlanw zasięg(5):
surowe= Wejście('Wprowadź nazwę języka:')

obiekt danych.dodać(surowe)

# Otwórz plik do zapisu danych
obsługa_plików= otwarty('Języki', „wb”)

# Zrzuć dane obiektu do pliku
marynata.wysypisko(obiekt danych,obsługa_plików)

# zamknij program obsługi plików, aby zwolnić zasoby
obsługa_plików.blisko()

# Drukuj wiadomość
wydrukować(„Dane są serializowane”)

Wyjście:



Po uruchomieniu skryptu, jako dane wejściowe, przyjmie pięć nazw języków.

Odbierz dane z pliku

roztrawianie danych jest przeciwieństwem marynowania danych. Utwórz plik o nazwie ogórek2.py z następującym skryptem Pythona. Tutaj, otwarty() Metoda służy do otwierania pliku binarnego o nazwie Języki , utworzony w poprzednim przykładzie. Załaduj() funkcja służy do rozpakowywania danych z pliku i przechowywania ich w zmiennej obiekt danych . Następny, dla pętla służy do iteracji danych z obiekt danych i wydrukuj w terminalu.

# Zaimportuj moduł marynowania
import marynata

# Otwórz program obsługi plików do odczytu pliku, z którego zostaną załadowane dane
obsługa_plików= otwarty('Języki', „rb”)

# Załaduj dane z pliku po deserializacji
obiekt danych= marynata.Załaduj(obsługa_plików)

# Zamknij program obsługi plików
obsługa_plików.blisko()

# Drukuj wiadomość
wydrukować(„Dane po deserializacji”)

# Wykonaj iterację pętli, aby wydrukować dane po deserializacji
dlagodzinawobiekt danych:
wydrukować('Wartość danych: ',godzina)

Wyjście:

Poniższe dane wyjściowe pojawią się po uruchomieniu skryptu.

Przenieś obiekt klasy do pliku

Sposób marynowania obiektu klasy pokazano w poniższym przykładzie. Utwórz plik o nazwie ogórek3.py z następującym skryptem. Tutaj, Pracownik class jest zadeklarowana do przypisania trzech wartości danych pracownika. Następnie obiekt obsługi plików o nazwie fileHandler jest tworzony, aby otworzyć plik do zapisu. Po zainicjowaniu obiektu klasy dane są serializowane przy użyciu wysypisko() funkcja i przechowywane w pliku o nazwie dane pracownika . Jeśli plik utworzy się poprawnie to komunikat, Dane są serializowane wydrukuje.

# Importuj moduł marynowania
import marynata

# Zadeklaruj klasę pracownika do przechowywania wartości
klasaPracownik:
definitywnie __w tym__(samego siebie,Nazwa, e-mail,Poczta):
samego siebie.Nazwa =Nazwa
samego siebie.e-mail = e-mail
samego siebie.Poczta =Poczta

#Utwórz obiekt pracownika
empObject=Pracownik(„Farheen”, ' [e-mail chroniony] ', 'Menedżer')

# Otwórz plik do przechowywania danych
fileHandler= otwarty(„Dane pracownika”, „wb”)

# Zapisz dane do pliku
marynata.wysypisko(empObject,fileHandler)

# Zamknij plik
FileHandler.blisko()

# Drukuj wiadomość
wydrukować(„Dane są serializowane”)

Wyjście:

Poniższe dane wyjściowe pojawią się po uruchomieniu skryptu.

Odbierz dane do obiektu klasy

Klasa z niezbędnymi właściwościami i metodami będzie wymagała deklaracji w celu pobrania danych z pliku do obiektu klasy. Utwórz plik o nazwie ogórek4.py z następującym kodem. Pracownik klasa jest zdefiniowana tutaj, aby pobrać dane. fileObject zmienna służy do otwierania pliku, dane pracownika do czytania. Następny, Załaduj() funkcja służy do przechowywania danych w obiekcie klasy po deserializacji. wyświetlacz() funkcja Pracownik class jest wywoływana, aby wydrukować wartości danych obiektu klasy.

# Importuj moduł marynowania
import marynata

# Zadeklaruj klasę pracownika do odczytywania i drukowania danych z pliku
klasaPracownik:
definitywnie __w tym__(samego siebie,Nazwa, e-mail,Poczta):
samego siebie.Nazwa =Nazwa
samego siebie.e-mail = e-mail
samego siebie.Poczta =Poczta

definitywniewyświetlacz(samego siebie):
wydrukować(„Informacje o pracownikach:”)
wydrukować('Nazwa :', samego siebie.Nazwa)
wydrukować('E-mail :', samego siebie.e-mail)
wydrukować('Poczta :', samego siebie.Poczta)

# Otwórz plik do czytania
fileObject= otwarty(„Dane pracownika”, „rb”)

# Rozbierz dane
pracownik= marynata.Załaduj(fileObject)

# Zamknij plik
fileObject.blisko()

#wydrukuj ramkę danych
pracownik.wyświetlacz()

Wyjście:

Poniższe dane wyjściowe pojawią się po uruchomieniu skryptu.

Wniosek

Moduł Pickle jest przydatną funkcją Pythona do serializacji i deserializacji danych. Po wykonaniu przykładów pokazanych w tym samouczku, przesyłanie danych z jednego skryptu Pythona do innego skryptu Pythona będzie łatwiejsze dla każdego.