Funkcje marynaty:
- Jest przeznaczony głównie do użytku w skrypcie Python.
- Służy do zapisywania obiektów Pythona między procesami.
- Śledzi wszystkie serializowane obiekty, a obiekt, który był wcześniej serializowany, nie będzie ponownie serializowany.
- Może w przejrzysty sposób 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 z tego pliku, w którym będą przechowywane paczkowane dane. Ostatni argument przyjmuje nazwę protokołu.
Składnia:
dump(data_object, 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 pliku przekazuje jako wartość argumentu, z którego zostaną pobrane dane.
Składnia:
load(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 przebiegnie prawidłowo, zostanie wydrukowany komunikat „Dane są serializowane”.
# Zaimportuj moduł marynowaniaimportuj marynatę
# Zadeklaruj obiekt do przechowywania danych
obiekt danych = []
# Powtórz pętlę for 5 razy i weź nazwy języków
dla n w zakresie(5):
raw = input('Wprowadź nazwę języka :')
obiekt danych.dołącz (surowe)
# Otwórz plik do zapisu danych
file_handler = open('języki', 'wb')
# Zrzuć dane obiektu do pliku
marynata.dump(dataObject, file_handler)
# zamknij obsługę plików, aby zwolnić zasoby
obsługa_plików.blisko()
# Drukuj wiadomość
print('Dane są serializowane')
Wynik:
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 marynata2.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. Kolejny, dla pętla służy do iteracji danych z obiekt danych i wydrukuj w terminalu.
# Zaimportuj moduł marynowaniaimportuj marynatę
# Otwórz program obsługi plików do odczytu pliku, z którego zostaną załadowane dane
file_handler = open('języki', 'rb')
# Załaduj dane z pliku po deserializacji
obiekt danych = marynata.load(plik_obsługi)
# Zamknij program obsługi plików
obsługa_plików.blisko()
# Drukuj wiadomość
print('Dane po deserializacji')
# Wykonaj iterację pętli, aby wydrukować dane po deserializacji
dla val w dataObject:
print('Wartość danych: ', val)
Wynik:
Następujące dane wyjściowe pojawią się po uruchomieniu skryptu.
Przenieś obiekt klasy do pliku
W poniższym przykładzie pokazano, w jaki sposób można zamarynować obiekt klasy. Utwórz plik o nazwie ogórek3.py z następującym skryptem. Tutaj, Pracownik klasa 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 pisania. 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, komunikat, „Dane są serializowane” wydrukuje.
# Importuj moduł marynowaniaimportuj marynatę
# Zadeklaruj klasę pracownika do przechowywania wartości
klasa Pracownik:
def __init__(self, name, email, post):
samego siebie.imię = imię
samego siebie.e-mail = e-mail
samego siebie.post = post
#Utwórz obiekt pracownika
empObject = Employee('Farheen', '[email chroniony]', 'Menedżer')
# Otwórz plik do przechowywania danych
fileHandler = open('employeeData', 'wb')
# Zapisz dane do pliku
marynata.dump(empObject, fileHandler)
# Zamknij plik
fileHandler.blisko()
# Drukuj wiadomość
print('Dane są serializowane')
Wynik:
Następujące 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 marynata4.py z następującym kodem. Pracownik tutaj zdefiniowana jest klasa do pobierania danych. fileObject zmienna służy do otwierania pliku, dane pracownika do czytania. Kolejny, Załaduj() funkcja służy do przechowywania danych w obiekcie klasy po deserializacji. pokaz() funkcja Pracownik klasa jest wywoływana, aby wydrukować wartości danych obiektu klasy.
# Importuj moduł marynowaniaimportuj marynatę
# Zadeklaruj klasę pracownika do odczytywania i drukowania danych z pliku
klasa Pracownik:
def __init__(self, name, email, post):
samego siebie.imię = imię
samego siebie.e-mail = e-mail
samego siebie.post = post
def wyświetlacz (własny):
print('Informacje o pracowniku:')
print('Nazwa :', self.Nazwa)
print('E-mail :', self.e-mail)
print('Opublikuj:', self.Poczta)
# Otwórz plik do czytania
fileObject = open('employeeData', 'rb')
# Odbierz dane
pracownik = marynata.load(fileObject)
# Zamknąć plik
fileObject.blisko()
#wydrukuj ramkę danych
pracownik.pokaz()
Wynik:
Następujące 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.