Како сериализовати и десеријализовати податке у Питхону

Питхон има неколико начина за серијализацију / десеријализацију података. У овом водичу ћемо видети модул маршал и модул цпицкле. Пре него што погледамо како се серијализовати у Питхону, хајде да укратко објаснимо овај концепт. Серијализација је широко коришћен процес за чување објеката у датотеци или бази података или за њихово слање преко мреже.

Време је да почнемо са водичем, видећемо пример са сваким модулом.

1. Маршал модул


Пре него што почнете, требали бисте знати да овај модул не осигурава компатибилност између различитих верзија Питхон компајлера.

Пример 1
Погледајмо први, врло једноставан пример:

 импорт марсхал дата = [1, 2, 3, 4] објецтБитес = марсхал.думпс (дата) принт ("Серијализовано:", објецтБитес) објецтЛоад = марсхал.лоадс (објецтБитес) принт ("Десеријализовано:", објецтЛоад)
Као први корак, увозимо маршал библиотеку, креирали смо листу коју ћемо серијализовати, затим је обојити и десеријализовати. Функција депоније стара се о серијализацији и функцији оптерећења за десеријализацију (обоје примају објекат са којим се закључава). Врло лако као што сте видели. Ево снимка екрана његовог извођења:

И овде закључујемо првим примером.

Пример 2
У овом примеру ћемо записати објекат у датотеку.

 увоз маршал података = [1, 2, 3, 4] филеОут = опен ("филе.дат", "бв") марсхал.думп (дата, филеОут) филеОут.цлосе () филеИн = опен ("филе.дат", "бр") датаЛоад = марсхал.лоад (филеИн) принт ("Десеријализовано:", датаЛоад) филеИн.цлосе () 
Увоз и листа се чувају, само што ћемо сада користити датотеке, отварамо датотеку за писање, б је за бајтове, а ми исписујемо листу (сада је функција Депонија и прима податке за писање и датотеку), када завршимо, затварамо их. За крај, отворимо исту датотеку у режиму читања и читамо из ње (имајте на уму да је функција оптерећење, и то прима датотеку као параметар), да завршимо, затварамо датотеку.

Ако погледамо датотеку филе.дат, видећемо следеће:

Умрежавање није много теже, само се сетите малог ограничења компатибилности између Питхон верзија. Пређимо на други модул.

2. Цпицкле модул


Овај модул је написан на језику Ц, постоји још један који се назива пицкле који је развијен у Питхону, али је спорији, па је препоручљиво користити цпицкле. За разлику од марсхала, овај модул ће гарантовати компатибилност између Питхон верзија, па пре програмирања морамо узети у обзир ове ствари.

БелешкаУ Питхону 3 цПицкле је преименован у _пицкле и аутоматски га користи модул пицкле.

За овај модул видећемо пример у коме користимо утичнице, видећемо код сервера, ради се само о томе како бисмо извршили сериализацију или десеријализацију, зато не укључује руковање грешкама и користи се једна порука.

 импорт соцкет импорт пицкле с = соцкет.соцкет () с.бинд (("лоцалхост", 2016)) с.листен (1) цонн, аддр = с.аццепт () дата = цонн.рецв (1024) принт ("Подаци примљено: ", подаци) принт (" Десеријализовано: ", пицкле.лоадс (дата)) с.цлосе ()
Видимо да све ради као са нормалним утичницама, само да ће примљени подаци стизати серијски, па смо их десеријализирали функцијом оптерећења, као што видите, назива се исто као у маршалском модулу. Коначно ћемо видети клијента:
 импорт соцкет импорт пицкле с = соцкет.соцкет () дата = [1, 2, 3, 4] објецтБитес = пицкле.думпс (дата) с.цоннецт (("лоцалхост", 2016)) с.сенд (објецтБитес) с. Близу ()
Нема већих компликација, објекат сериализујемо помоћу депоније и шаљемо га у створену утичницу. Испод остављам излаз сервера када се клијент повеже, излаз клијента се занемарује јер не показује ништа.

До сада је стигао водич о сериализацији и десеријализацији података у Питхону, јер знамо да нам овај језик много олакшава ствари.

БелешкаВодич користи верзију Питхон 3.5.

Да ли вам се допао и помогао овај водич?Можете наградити аутора притиском на ово дугме да бисте му дали позитиван поен

Ви ће помоћи развој сајта, дељење страницу са пријатељима

wave wave wave wave wave