Paano mag-atsara ng mga bagay sa Python

How Pickle Objects Python



Ang anumang data ay maaaring ma-serialize at deserialized sa Python sa pamamagitan ng paggamit ng JSON at Pickle module. Bago itago ang anumang data sa isang file, ang mga bagay ng Python ay naka-serialize gamit ang pickle module. Ang mga bagay ng Python ay ginawang mga stream ng character sa pamamagitan ng paggamit ng modyul na ito. Kapag nais ng gumagamit na kunin ang data ng file para sa paggamit ng isa pang script ng sawa pagkatapos ang data ng file ay deserialized ng module ng pickle. Ang mga tampok ng module ng atsara at kung paano magagamit ang modyul na ito sa python script para sa serialization at deserialization ay inilarawan sa tutorial na ito.

Mga Tampok ng atsara:

  • Pangunahin itong idinisenyo upang magamit para sa script ng Python.
  • Ginagamit ito para sa pag-save ng mga bagay na sawa sa pagitan ng mga proseso.
  • Sinusubaybayan nito ang lahat ng mga naka-serialize na bagay at ang bagay na na-serialize bago ay hindi na-serialize muli.
  • Maaari itong i-save at ibalik ang halimbawa ng klase nang malinaw.
  • Hindi ito ligtas na gamitin. Kaya, hindi mas mahusay na mag-unpickle ng data mula sa isang hindi kilalang mapagkukunan.

dump () para sa serialization:

ginagamit ang pagpapaandar ng dump () upang mai-convert ang data ng object sa isang stream ng character bago mag-save sa isang file. Ang pag-andar na ito ay maaaring tumagal ng tatlong mga argumento. Ang unang dalawang argumento ay sapilitan at ang huling argumento ay opsyonal. Ang unang argumento ay tumatagal ng isang object ng data na kailangang serialize. Dadalhin ng pangalawang argument ang object ng handler ng file ng file na iyon kung saan maiimbak ang naka-tag na data. Ang huling argumento ay tumatagal ng pangalan ng protokol.







Syntax:



magtapon(data_object,file_object, [protokol])

load () para sa deserialization:

Ang pag-andar ng () pag-andar ay ginagamit upang mai-convert ang data ng character stream mula sa file sa isang bagay na Python. Naglalaman lamang ang pagpapaandar na ito ng isang argumento at ang object ng file handler ng file ay ipinapasa bilang halaga ng argumento mula sa kung saan makuha ang data.



Syntax:





karga(file_object)

Pag-atsara ng isang simpleng Bagay upang maiimbak sa isang file

Lumikha ng isang file na pinangalanan pickle1.py kasama ang sumusunod na script ng python. Sa sumusunod na script, isang data object na pinangalanan dataObject ay idineklara na mag-iimbak ng limang mga pangalan ng wika sa pamamagitan ng pag-ulit ng for loop. Susunod, bukas () na pamamaraan ay ginagamit upang magtalaga ng isang handler ng file para sa paglikha ng isang binary file na pinangalanan mga wika magtapon () ginagamit ang pagpapaandar dito upang ma-serialize ang data ng dataObject at iimbak ito sa mga wika file Kung ang serialization ay tapos na maayos pagkatapos ng isang mensahe, ang Data ay serialized ay i-print.

# I-import ang module ng atsara
angkat atsara

# Ipahayag ang bagay upang mag-imbak ng data
dataObject= []

# Iterate ang para sa loop nang 5 beses at kumuha ng mga pangalan ng wika
para sansa saklaw(5):
hilaw= input('Magpasok ng isang pangalan ng wika:')

dataObject.idugtong(hilaw)

# Magbukas ng isang file para sa pagsulat ng data
file_handler= buksan('mga wika', 'wb')

# Itapon ang data ng bagay sa file
atsara.magtapon(dataObject,file_handler)

# isara ang handler ng file upang palabasin ang mga mapagkukunan
file_handler.malapit na()

# I-print ang mensahe
mag-print('Naka-serialize ang data')

Output:



Matapos patakbuhin ang script, aabutin ng limang mga pangalan ng wika bilang input.

I-unsple ang data mula sa isang file

ang pag-unsick ng data ay ang kabaligtaran ng data ng pag-aatsara. Lumikha ng isang file na pinangalanan pickle2.py kasama ang sumusunod na script ng python. Dito, buksan () ginagamit ang pamamaraan upang buksan ang pangalang binary file mga wika , nilikha sa nakaraang halimbawa. load () Ginagamit ang pagpapaandar upang mai-unsickle ang data mula sa file at iimbak ito sa variable dataObject . Susunod, para sa loop ay ginagamit umulit ang data mula sa dataObject at i-print sa terminal.

# I-import ang module ng atsara
angkat atsara

# Magbukas ng isang handler ng file para sa pagbabasa ng isang file mula sa kung saan maglo-load ang data
file_handler= buksan('mga wika', 'rb')

# I-load ang data mula sa file pagkatapos ng deserialization
dataObject= atsara.karga(file_handler)

# Isara ang handler ng file
file_handler.malapit na()

# I-print ang mensahe
mag-print('Data pagkatapos ng deserialization')

# Iterate ang loop upang mai-print ang data pagkatapos ng deserialization
para saorassadataObject:
mag-print('Ang halaga ng data:',oras)

Output:

Lilitaw ang sumusunod na output pagkatapos patakbuhin ang script.

Mag-pickle ng isang Object ng Klase sa isang file

Kung paano maaaring mag-atsara ang isang bagay sa klase ay ipinapakita sa sumusunod na halimbawa. Lumikha ng isang file na pinangalanan atsara3.py kasama ang sumusunod na iskrip. Dito, Empleado ang klase ay idineklarang magtalaga ng tatlong halaga ng data ng isang empleyado. Susunod, pinangalanan ang isang file handler object fileHandler ay nilikha upang buksan ang isang file para sa pagsusulat. Matapos ang pagpapasimula ng object ng klase, ang data ay naka-serialize gamit ang magtapon () pagpapaandar at nakaimbak sa file na pinangalanan empleyadoData . Kung ang file ay lilikha nang maayos pagkatapos ng mensahe, Naka-serialize ang data magpi-print.

# Mag-import ng module ng atsara
angkat atsara

# Ipahayag ang klase ng empleyado upang maiimbak ang halaga
klaseEmpleado:
def __sa loob__(sarili,pangalan, email,post):
sarili.pangalan =pangalan
sarili.email = email
sarili.post =post

# Lumikha ng object ng empleyado
empObject=Empleado('Farheen', '[Protektado ang email]', 'Manager')

# Buksan ang file para sa data ng tindahan
fileHandler= buksan('empleyadoData', 'wb')

# I-save ang data sa file
atsara.magtapon(empObject,fileHandler)

# Isara ang file
fileHandler.malapit na()

# I-print ang mensahe
mag-print('Naka-serialize ang data')

Output:

Lilitaw ang sumusunod na output pagkatapos patakbuhin ang script.

I-unsple ang data sa isang Object ng Klase

Ang isang klase na may mga kinakailangang katangian at pamamaraan ay mangangailangan upang ideklara para sa pagkuha ng data mula sa isang file patungo sa isang object ng klase. Lumikha ng isang file na pinangalanan pickle4.py kasama ang sumusunod na code. Empleado ang klase ay tinukoy dito upang makuha ang data. fileObject Ginagamit ang variable upang buksan ang file, empleyadoData para sa pagbabasa. Susunod, load () Ginagamit ang pagpapaandar upang maiimbak ang data sa bagay sa klase pagkatapos ng deserialization. ipakita () pagpapaandar ng Empleado ang klase ay tinawag upang mai-print ang mga halaga ng data ng object ng klase.

# Mag-import ng module ng atsara
angkat atsara

# Ideklara ang klase ng empleyado na magbasa at mag-print ng data mula sa isang file
klaseEmpleado:
def __sa loob__(sarili,pangalan, email,post):
sarili.pangalan =pangalan
sarili.email = email
sarili.post =post

defipakita(sarili):
mag-print('Impormasyon ng Empleyado:')
mag-print('Pangalan:', sarili.pangalan)
mag-print('Email:', sarili.email)
mag-print('I-post:', sarili.post)

# Buksan ang file para sa pagbabasa
fileObject= buksan('empleyadoData', 'rb')

# I-unickle ang data
empleado= atsara.karga(fileObject)

# Isara ang file
fileObject.malapit na()

#print ang dataframe
empleado.ipakita()

Output:

Lilitaw ang sumusunod na output pagkatapos patakbuhin ang script.

Konklusyon

Ang module ng pickle ay isang kapaki-pakinabang na tampok ng sawa para sa serialization ng data at deserialization. Matapos makumpleto ang mga halimbawang ipinakita sa tutorial na ito, ang paglilipat ng data mula sa isang python script patungo sa isa pang script ng sawa ay magiging madali para sa sinuman.