Kā marinēt objektus Python

How Pickle Objects Python



Izmantojot JSON un Pickle moduli, visus datus var sērijveidot un deserializēt Python. Pirms datu glabāšanas failā, Python objekti tiek sērijveidoti, izmantojot marinēšanas moduli. Izmantojot šo moduli, Python objekti tiek pārvērsti rakstzīmju plūsmās. Ja lietotājs vēlas izgūt faila datus, lai izmantotu citu python skriptu, faila dati tiek deserializēti ar marinēšanas moduli. Šajā apmācībā ir aprakstītas marinēšanas moduļa iezīmes un tas, kā šo moduli var izmantot python skriptos, lai veiktu sērijveida un deserializāciju.

Marinēšanas funkcijas:

  • Tas galvenokārt ir paredzēts lietošanai Python skriptos.
  • To izmanto, lai saglabātu pitona objektus starp procesiem.
  • Tas izseko visus sērijveida objektus, un objekts, kas ir sērijveidots iepriekš, vairs netiks sērijveidots.
  • Tas var pārredzami saglabāt un atjaunot klases instanci.
  • Tā lietošana nav droša. Tāpēc nav labāk atdalīt datus no nezināma avota.

dump () sērijveidā:

funkciju dump () izmanto, lai objekta datus pārvērstu rakstzīmju straumē pirms saglabāšanas failā. Šai funkcijai var būt trīs argumenti. Pirmie divi argumenti ir obligāti, bet pēdējie nav obligāti. Pirmais arguments aizņem datu objektu, kas jāserializē. Otrais arguments ņem šī faila failu apstrādātāja objektu, kurā tiks glabāti sakopotie dati. Pēdējais arguments ņem protokola nosaukumu.







Sintakse:



izgāztuve(data_object,file_object, [protokols])

slodze () deserializācijai:

funkciju load () izmanto, lai no faila pārvērstu rakstzīmju plūsmas datus Python objektā. Šī funkcija satur tikai vienu argumentu, un faila apstrādātāja objekts tiek nodots kā argumenta vērtība, no kuras dati tiks izgūti.



Sintakse:





slodze(file_object)

Marinējiet vienkāršu objektu, ko saglabāt failā

Izveidojiet failu ar nosaukumu marinēts gurķis1.py ar šādu python skriptu. Nākamajā skriptā ir nosaukts datu objekts dataObject tiek deklarēts, ka tajā glabājas piecu valodu nosaukumi, atkārtojot for ciklu. Pēc tam metodi open () izmanto, lai piešķirtu failu apstrādātāju, lai izveidotu bināro failu ar nosaukumu valodās. izgāztuve () funkcija tiek izmantota, lai sērijveidotu datus par dataObject un uzglabājiet to valodās failu. Ja serializācija tiks veikta pareizi, tiks izdrukāts ziņojums “Dati ir serializēti”.

# Importējiet marinēšanas moduli
importēt marinēts gurķis

# Deklarējiet objektu datu glabāšanai
dataObject= []

# Atkārtojiet for cilpu 5 reizes un lietojiet valodu nosaukumus
priekšniekšā diapazons(5):
neapstrādāts= ievadi('Ievadiet valodas nosaukumu:')

dataObject.pievienot(neapstrādāts)

# Atveriet failu datu ierakstīšanai
file_handler= atvērts('valodas', 'wb')

# Izmetiet objektā esošos datus failā
marinēts gurķis.izgāztuve(dataObject,file_handler)

# aizveriet failu apstrādātāju, lai atbrīvotu resursus
file_handler.aizvērt()

# Drukāt ziņojumu
drukāt(“Dati ir sērijveidā”)

Izeja:



Pēc skripta palaišanas tiks ievadīti pieci valodu nosaukumi.

Izšķiriet datus no faila

datu kodināšana ir pretēja kodināšanas datiem. Izveidojiet failu ar nosaukumu marinēts gurķis2.py ar šādu python skriptu. Šeit, atvērts () metode tiek izmantota, lai atvērtu bināro failu ar nosaukumu valodās , izveidots iepriekšējā piemērā. ielādēt () funkcija tiek izmantota, lai atdalītu datus no faila un saglabātu tos mainīgajā dataObject . Nākamais, priekš cilpa tiek izmantota, lai atkārtotu datus no dataObject un drukājiet terminālī.

# Importējiet marinēšanas moduli
importēt marinēts gurķis

# Atveriet failu apstrādātāju, lai lasītu failu, no kura tiks ielādēti dati
file_handler= atvērts('valodas', 'rb')

# Pēc deserializācijas ielādējiet datus no faila
dataObject= marinēts gurķis.slodze(file_handler)

# Aizveriet failu apstrādātāju
file_handler.aizvērt()

# Drukāt ziņojumu
drukāt('Dati pēc deserializācijas')

# Atkārtojiet cilpu, lai pēc deserializācijas izdrukātu datus
priekšstiekšādataObject:
drukāt('Datu vērtība:',st)

Izeja:

Pēc skripta palaišanas parādīsies šāda izvade.

Marinējiet faila klases objektu

Klases objekta kodināšana ir parādīta nākamajā piemērā. Izveidojiet failu ar nosaukumu marinēts gurķis3.py ar šādu skriptu. Šeit, Darbinieks klase tiek deklarēta, lai piešķirtu trīs darbinieka datu vērtības. Tālāk nosaukts failu apstrādātāja objekts fileHandler ir izveidots, lai atvērtu failu rakstīšanai. Pēc klases objekta inicializācijas dati tiek serializēti, izmantojot izgāztuve () funkcija un saglabāta nosauktajā failā darbinieksDati . Ja fails tiks izveidots pareizi, parādīsies ziņojums, Dati tiek serializēti izdrukās.

# Importēt marinēšanas moduli
importēt marinēts gurķis

# Deklarējiet darbinieku klasi, lai saglabātu vērtību
klaseDarbinieks:
def __tajā__(sevi,vārds, e -pastu,ziņu):
sevi.vārds =vārds
sevi.e -pastu = e -pastu
sevi.ziņu =ziņu

#Izveidot darbinieka objektu
empObject=Darbinieks('Farheen', '[aizsargāts ar e -pastu]', 'Pārvaldnieks')

# Atveriet failu uzglabāšanas datiem
fileHandler= atvērts('darbinieka dati', 'wb')

# Saglabājiet datus failā
marinēts gurķis.izgāztuve(empObject,fileHandler)

# Aizveriet failu
fileHandler.aizvērt()

# Drukāt ziņojumu
drukāt(“Dati ir sērijveidā”)

Izeja:

Pēc skripta palaišanas parādīsies šāda izvade.

Izšķiriet datus no klases objekta

Klasei ar nepieciešamajām īpašībām un metodēm būs jāpaziņo, lai datus izgūtu no faila uz klases objektu. Izveidojiet failu ar nosaukumu marinēts gurķis4.py ar šādu kodu. Darbinieks klase ir definēta šeit, lai izgūtu datus. fileObject mainīgais tiek izmantots faila atvēršanai, darbinieksDati lasīšanai. Nākamais, ielādēt () funkcija tiek izmantota datu glabāšanai klases objektā pēc deserializācijas. displejs () funkcija Darbinieks klase tiek izsaukta, lai izdrukātu klases objekta datu vērtības.

# Importēt marinēšanas moduli
importēt marinēts gurķis

# Pasludiniet darbinieku klasi, lai lasītu un drukātu datus no faila
klaseDarbinieks:
def __tajā__(sevi,vārds, e -pastu,ziņu):
sevi.vārds =vārds
sevi.e -pastu = e -pastu
sevi.ziņu =ziņu

defdisplejs(sevi):
drukāt('Informācija par darbiniekiem:')
drukāt('Vārds:', sevi.vārds)
drukāt('E -pasts:', sevi.e -pastu)
drukāt('Ziņa:', sevi.ziņu)

# Atveriet failu lasīšanai
fileObject= atvērts('darbinieka dati', 'rb')

# Atšķaidiet datus
darbinieks= marinēts gurķis.slodze(fileObject)

# Aizvērt failu
fileObject.aizvērt()

#izdrukājiet datu rāmi
darbinieks.displejs()

Izeja:

Pēc skripta palaišanas parādīsies šāda izvade.

Secinājums

Marinēšanas modulis ir noderīga python funkcija datu sērijveidošanai un deserializēšanai. Pabeidzot šajā apmācībā parādītos piemērus, ikvienam būs vieglāk pārsūtīt datus no viena python skripta uz citu.