Как да мазирате обекти в Python

How Pickle Objects Python



Всички данни могат да бъдат сериализирани и десериализирани в Python с помощта на JSON и Pickle модул. Преди да съхранявате каквито и да е данни във файл, обектите на Python се сериализират с помощта на модул за избиране. Обектите на Python се преобразуват в символни потоци с помощта на този модул. Когато потребителят иска да извлече данните от файла за използване на друг скрипт на python, тогава данните от файла се десериализират чрез модул за мариноване. Характеристиките на модула за избиране и как този модул може да се използва в скрипта на python за сериализация и десериализация са описани в този урок.

Характеристики на туршия:

  • Той е предназначен главно за скрипт на Python.
  • Използва се за запазване на обектите на python между процесите.
  • Той следи всички сериализирани обекти и обектът, който е сериализиран преди, няма да се сериализира отново.
  • Той може да запазва и възстановява прозрачно инстанцията на класа.
  • Не е безопасно да се използва. Така че не е по -добре да премахнете данните от неизвестен източник.

dump () за сериализация:

Функцията dump () се използва за преобразуване на обектните данни в символен поток преди записване във файл. Тази функция може да приема три аргумента. Първите два аргумента са задължителни, а последният аргумент не е задължителен. Първият аргумент взема обект от данни, който трябва да сериализира. Вторият аргумент приема обекта за обработка на файлове на този файл, където ще се съхраняват събраните данни. Последният аргумент приема името на протокола.







Синтаксис:



сметище(data_object,file_object, [протокол])

load () за десериализация:

load () се използва за преобразуване на данни от поток от символи от файла в обект на Python. Тази функция съдържа само един аргумент и обектът за обработка на файлове на файла преминава като стойност на аргумента, откъдето ще бъдат извлечени данните.



Синтаксис:





натоварване(file_object)

Изберете обикновен обект, който да съхранявате във файл

Създайте файл с име pickle1.py със следния скрипт на python. В следния скрипт обект с данни с име dataObject е декларирано да съхранява пет езикови имена чрез итерация на цикъла for. След това методът open () се използва за задаване на манипулатор на файлове за създаване на двоичен файл с име езици. dump () функцията се използва тук за сериализиране на данните на dataObject и го съхранявайте в езици файл. Ако сериализацията ще бъде извършена правилно, ще се отпечата съобщение, Data is serialized.

# Импортирайте модула за туршия
внос туршия

# Обявете обекта за съхраняване на данни
dataObject= []

# Повторете цикъла for 5 пъти и вземете имена на езици
занв диапазон(5):
суров= вход(„Въведете име на език:“)

dataObject.добавям(суров)

# Отваряне на файл за запис на данни
file_handler= отворен(„езици“, 'wb')

# Изхвърлете данните на обекта във файла
туршия.сметище(dataObject,file_handler)

# затворете манипулатора на файлове, за да освободите ресурсите
file_handler.близо()

# Отпечатайте съобщение
печат(„Данните са сериализирани“)

Изход:



След стартиране на скрипта, той ще вземе пет езикови имена като вход.

Премахнете изтриването на данни от файл

изтриването на данните е обратното на маринованите данни. Създайте файл с име pickle2.py със следния скрипт на python. Тук, отворен () метод се използва за отваряне на двоичен файл с име езици , създаден в предишния пример. зареждане () функцията се използва за премахване на данните от файла и съхраняването им в променливата dataObject . Следващия, за цикъл се използва за повторение на данните от dataObject и отпечатайте в терминала.

# Импортирайте модула за туршия
внос туршия

# Отворете манипулатор на файлове за четене на файл, от който ще се зареждат данните
file_handler= отворен(„езици“, 'rb')

# Заредете данните от файла след десериализация
dataObject= туршия.натоварване(file_handler)

# Затворете манипулатора на файлове
file_handler.близо()

# Отпечатайте съобщение
печат(„Данни след десериализация“)

# Итерирайте цикъла, за да отпечатате данните след десериализация
зачасвdataObject:
печат(„Стойността на данните:“,час)

Изход:

Следният изход ще се появи след стартиране на скрипта.

Изберете обект от клас към файл

В следния пример е показано как обектът от клас може да бъде маринован. Създайте файл с име pickle3.py със следния скрипт. Тук, Служител клас е деклариран да присвоява три стойности на данни на служител. След това обект за обработка на файлове с име fileHandler е създаден за отваряне на файл за писане. След инициализиране на обекта на клас, данните се сериализират с помощта dump () функция и се съхранява във файла с име служител Данни . Ако файлът ще се създаде правилно, съобщението, Данните са сериализирани ще отпечата.

# Импортиране на туршия модул
внос туршия

# Декларирайте класа на служителите, за да съхранява стойността
класСлужител:
def __в него__(себе си,име, електронна поща,пост):
себе си.име =име
себе си.електронна поща = електронна поща
себе си.пост =пост

#Създайте обект на служител
empObject=Служител('Farheen', '[защитен имейл]', 'Мениджър')

# Отваряне на файл за съхранение на данни
fileHandler= отворен('EmployeData', 'wb')

# Запазете данните във файла
туршия.сметище(empObject,fileHandler)

# Затворете файла
fileHandler.близо()

# Отпечатайте съобщение
печат(„Данните са сериализирани“)

Изход:

Следният изход ще се появи след стартиране на скрипта.

Премахнете данните от обект на клас

Клас с необходимите свойства и методи ще изисква деклариране за извличане на данни от файл в обект на клас. Създайте файл с име pickle4.py със следния код. Служител тук се дефинира клас за извличане на данните. fileObject променливата се използва за отваряне на файла, служител Данни за четене. Следващия, зареждане () функцията се използва за съхраняване на данните в обекта на клас след десериализация. дисплей () функция на Служител class се извиква за отпечатване на стойностите на данните на обекта class.

# Импортиране на туршия модул
внос туршия

# Декларирайте клас служител за четене и отпечатване на данни от файл
класСлужител:
def __в него__(себе си,име, електронна поща,пост):
себе си.име =име
себе си.електронна поща = електронна поща
себе си.пост =пост

defдисплей(себе си):
печат(„Информация за служителите:“)
печат(„Име:“, себе си.име)
печат('Електронна поща :', себе си.електронна поща)
печат('Публикувай:', себе си.пост)

# Отворете файла за четене
fileObject= отворен('EmployeData', 'rb')

# Премахнете данните
служител= туршия.натоварване(fileObject)

# Затваряне на файла
fileObject.близо()

#отпечатайте рамката за данни
служител.дисплей()

Изход:

Следният изход ще се появи след стартиране на скрипта.

Заключение

Модулът Pickle е полезна функция на python за сериализация и десериализация на данни. След приключване на примерите, показани в този урок, прехвърлянето на данни от един скрипт на Python в друг скрипт на Python ще бъде по -лесно за всеки.