Шаг 172.
Основы языка Python.
Работа с файлами и каталогами. Сохранение объектов в файл. Модуль pickle

    На этом шаге мы рассмотрим функции и методы сохранения объектов в файл, предоставляемые этим модулем.

    Сохранить объекты в файл и в дальнейшем восстановить объекты из файла позволяют модули pickle и shelve.

    Модуль pickle предоставляет следующие функции:

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

>>> obj1 = ["Строка", (2, 3)]
>>> obj2 = (1, 2)
>>> f = open(r"file.txt", "wb")
>>> pickle.dump (obj1, f)   # Сохраняем первый объект
>>> pickle.dump (obj2, f)   # Сохраняем второй объект
>>> f.close ()

    Для восстановления объектов необходимо несколько раз вызвать функцию load():

>>> f = open (r"file.txt", "rb")
>>> obj1 = pickle.load(f)   # Восстанавливаем первый объект
>>> obj2 = pickle.load(f)   # Восстанавливаем второй объект
>>> obj1, obj2
(['Строка', (2, 3)], (1, 2))
>>> f.close ()

    Сохранить объект в файл можно также с помощью метода dump(<Объект>) класса Pickler. Конструктор класса имеет следующий формат:

  Pickler(<Файл>[, <Протокол>][, fix_imports=True])

    Пример сохранения объекта в файл:

>>> f =  open(r"file.txt", "wb")
>>> obj = ["Строка", (2, 3)]
>>> pkl = pickle.Pickler (f)
>>> pkl.dump(obj)
>>> f.close ()

    Восстановить объект из файла позволяет метод load() из класса Unpickler. Формат конструктора класса:

  Unpickler(<Файл>[, fix_imports=True][, encoding="ASCII"]
    [, errors="strict"])

    Пример восстановления объекта из файла:

>>> f = open (r"file.txt", "rb")
>>> obj = pickle.Unpickler(f).load()
>>> obj
['Строка', (2, 3)]
>>> f.close()

    Модуль pickle позволяет также преобразовать объект в последовательность байтов и восстановить объект из таковой. Для этого предназначены две функции:

    В заключение этого шага дадим краткую характеристику использованных в перечисленных функциях параметров.

    На следующем шаге мы рассмотрим как реализованы эти операции в модуле shelve.




Предыдущий шаг Содержание Следующий шаг