<MyRusakov.ru />

Профессия Web-разработчик

Профессия Web-разработчик

Этот комплект за 8 месяцев превратит Вас в Web-разработчика с нуля. Учиться достаточно 1 час в день.

Начнёте Вы с HTML, CSS и вёрстки сайтов. Потом перейдёте к программированию и JavaScript. Затем изучите PHP, MySQL, SQL, Python. Изучите Web-фреймворки Laravel и Django. Создадите 5 своих сайтов для портфолио.

Комплект содержит:

- 540 видеоуроков

- 110 часов видео

- 1205 заданий для закрепления материала из уроков

- 5 финальных тестов

- 7 сертификатов

- 12 Бонусных курсов

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Как использовать Pickle для сериализации объектов в Python

Как использовать Pickle для сериализации объектов в Python

Сериализация объектов - это процесс преобразования структур данных или состояния объекта в формат, который может быть сохранен в файле или передан и восстановлен позже. В этой статье вы узнаете, как использовать встроенный модуль pickle для сериализации и десериализации объектов в Python.

Сериализацию в Python часто называют консервацией или pickling. Pickling - это просто процесс, посредством которого иерархия объектов Python преобразуется в поток байтов, а распаковка - это обратная операция.

Давайте начнем с определения базовых структур данных Python:


import pickle

# определим любую структуру данных, включая список, кортеж и т.д.
l = list(range(10000))

Я использовал здесь список, содержащий 10000 элементов, только для демонстрационных целей, вы можете использовать любой объект Python, приведенный ниже код сохраняет этот список в файл:


# save it to a file
with open("list.pickle", "wb") as file:
    pickle.dump(l, file)

pickle.dump(obj, file) записывает обработанное представление obj (в данном случае список) в открытый файл (в режиме записи и байтов "wb"), давайте загрузим этот объект снова:


# load it again
with open("list.pickle", "rb") as file:
    unpickled_l = pickle.load(file)

pickle.load(file) считывает и возвращает объект данных из консервации, хранящихся в файле (открытом в режиме чтения и байтов "rb"), сравнивая исходный и необработанный объект:


print("unpickled_l == l: ", unpickled_l == l)
print("unpickled l is l: ", unpickled_l is l)


# вывод

unpickled_l == l:  True
unpickled l is l:  False

Значения списка по-прежнему одинаковы (равны), но он не идентичен, другими словами, у не отмеченного списка есть другое место в памяти, так что это буквально копия исходного объекта.

Вы также можете сохранять и загружать экземпляры объектов пользовательских классов. Например, давайте определим простой класс Site:


import pickle
import datetime
import sys




class Site:
    def __init__(self, site_name, site_domen, lang):
        self.site_name = site_name
        self.site_domen = site_domen
        self.lang = lang
        self.time = datetime.datetime.now()

    def __str__(self):
        return f"Название сайта={self.site_name}.{self.site_domen}, язык сайта={self.lang}, текущее время={self.time}>"


p = Site("Myrusakov", "ru", "Python")

# Давайте повторим тот же процесс еще раз:

# сохраним объект
with open("site.pickle", "wb") as file:
    pickle.dump(p, file)

# загрузим его
with open("site.pickle", "rb") as file:
    p2 = pickle.load(file)

print(p)
print(p2)


# вывод

'''
Если сохранить состояние экземпляра класса Site, а затем загрузить его, то можно обнаружить, что сохраненное время идентично
'''

Название сайта=Myrusakov.ru, язык сайта=Python, текущее время=2022-01-11 10:53:40>
Название сайта=Myrusakov.ru, язык сайта=Python, текущее время=2022-01-11 10:53:40>


В общем, если вы хотите десериализоавать определенный пользователем объект, вам необходимо реализовать его класс в текущей области видимости, в противном случае это вызовет ошибку.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.