Пример использования Python Pickle

В этом уроке мы будем говорить о примере Python Pickle. В нашем предыдущем уроке мы говорили о Python Multiprocessing.

Python Pickle

Python Pickle используется для сериализации и десериализации структуры объектов Python. Любой объект на Python может быть запиклен, чтобы его можно было сохранить на диск. Сначала Python сериализует объект, а затем преобразует его в поток символов, так что этот поток символов содержит всю необходимую информацию для восстановления объекта в другом сценарии Python. Обратите внимание, что модуль pickle не является безопасным относительно ошибочных или злонамеренно созданных данных согласно документации. Поэтому никогда не десериализуйте данные, полученные из ненадежного или неаутентифицированного источника.

Python Pickle dump

В этом разделе мы собираемся узнать, как сохранить данные с помощью Python pickle. Для этого сначала мы должны импортировать модуль pickle. Затем используйте функцию pickle.dump() для сохранения данных объекта в файл. Функция pickle.dump() принимает 3 аргумента. Первый аргумент – это объект, который вы хотите сохранить. Второй аргумент – это объект файла, который вы получаете, открывая желаемый файл в режиме write-binary (wb). И третий аргумент – это аргумент ключ-значение. Этот аргумент определяет протокол. Существует два типа протоколов – pickle.HIGHEST_PROTOCOL и pickle.DEFAULT_PROTOCOL. Смотрите пример кода, чтобы узнать, как сохранить данные с помощью pickle.

import pickle

# принимаем ввод пользователя для определения объема данных
number_of_data = int(input('Enter the number of data : '))
data = []

# принимаем ввод данных
for i in range(number_of_data):
    raw = input('Enter data '+str(i)+' : ')
    data.append(raw)

# открываем файл, куда вы хотите сохранить данные
file = open('important', 'wb')

# сохраняем информацию в этот файл
pickle.dump(data, file)

# закрываем файл
file.close()

Следующая программа запросит вас ввести некоторые данные. В моем случае это было так.

Python Pickle load

Для извлечения данных из pickled, шаги довольно просты. Вам нужно использовать функцию pickle.load() для этого. Основным аргументом функции загрузки pickle является объект файла, который вы получаете, открывая файл в режиме чтения в двоичном режиме (rb). Просто! Не так ли? Давайте напишем код для извлечения данных, которые мы pickled, используя код pickle dump. Посмотрите следующий код для понимания.

import pickle

# откройте файл, где вы сохранили pickled данные
file = open('important', 'rb')

# выведите информацию в этот файл
data = pickle.load(file)

# закройте файл
file.close()

print('Showing the pickled data:')

cnt = 0
for item in data:
    print('The data ', cnt, ' is : ', item)
    cnt += 1

Вывод будет следующим:

Showing the pickled data:
The data  0  is :  123
The data  1  is :  abc
The data  2  is :  !@#$

Пример использования Python Pickle

I made a short video showing execution of python pickle example programs – first to store data into file and then to load and print it. As you can see that the file created by python pickle dump is a binary file and shows garbage characters in the text editor.

Важные заметки о Python Pickle

Несколько важных моментов о модуле Python pickle:

  1. Протокол pickle специфичен для Python – не гарантируется его совместимость с другими языками программирования. Это означает, что вы, скорее всего, не сможете передать информацию, чтобы сделать ее полезной в других языках программирования.
  2. Также нет гарантии совместимости между разными версиями Python, потому что не каждая структура данных Python может быть сериализована модулем.
  3. Последняя версия протокола pickle используется по умолчанию, если вы не измените ее вручную.
  4. Последнее, но не менее важное, модуль pickle не обеспечивает безопасность от ошибочных или злонамеренно сконструированных данных в соответствии с документацией.

Итак, это все, что касается примера использования python pickle. Надеюсь, вы все поняли хорошо. По любым дополнительным вопросам, пожалуйста, используйте раздел комментариев. 🙂 Ссылка: Официальная документация

Source:
https://www.digitalocean.com/community/tutorials/python-pickle-example