Материалы для дальнейшего чтения
Материалы для дальнейшего чтения XML на Википедии The ElementTree XML API(англ. ) Elements and Element Trees - Элементы и деревья элементов(англ. ) XPath Support in ElementTree - Поддержка XPath в ElementTree(англ. ) The ElementTree iterparse Function - Функция iterparse в ElementTree(англ. ) lxml(англ. ) Parsing XML and HTML with lxml - обработка XML и HTML в lxml(англ. ) XPath and XSLT with lxml - XPath и XSLT в lxml(англ. ) xmlwitch(англ. ) Сериализация объектов Python
Погружение С первого взгляда, идея сериализации проста. У вас есть структура данных в памяти, которую вы хотите сохранить, использовать повторно, или отправить кому либо. Как вам это сделать? Это зависит от того как вы ее сохраните, как вы ее хотите использовать, и кому вы ее хотите отправить. Многие игры позволяют вам сохранять ваш прогресс перед выходом и возобновлять игру после запуска. (Вообще, многие неигровые приложения также позволяют это делать). В этом случае, структура, которая хранит ваш прогресс в игре, должна быть сохранена на диске, когда вы закрываете игру, и загружена с диска, когда вы ее запускаете. Данные предназначены только для использования той же программой что и создала их, никогда не посылаются по сети, и никогда не читаются ничем кроме программы их создавшей. Поэтому проблемы совместимости ограничены тем, чтобы более поздние версии программы могли читать данные созданные ранними версиями. Для таких случаев модуль pickle идеален. Это часть стандартной библиотеки Python, поэтому он всегда доступен. Он быстрый, большая часть написана на C, как и сам интерпретатор Python. Он может сохранять совершенно произвольные комплексные структуры данных Python. Что может сохранять модуль pickle?
Если для вас этого мало, то модуль pickle еще и расширяем. Если вам интересна эта возможность, то смотрите ссылки в разделе «Дальнейшее чтение» в конце этой главы.
Маленькая заметка о примерах в этой главе. Эта часть повествует о двух Python консолях. Все примеры в этой главе — часть одной большей истории. Вам нужно будет переключаться назад и вперед между двумя консолями для демонстрации модулей pickle и json. Для того чтобы не запутаться откройте консоль Python и определите следующую переменную: > > > shell = 1 Оставьте это окно открытым. И откройте еще одну консоль Python и определите следующую переменную: > > > shell = 2 В этой главе я буду использовать переменную shell для того чтобы показать какую именно консоль Python я использую в каждом примере. Сохранение данных в файл Pickle. Модуль Pickle работает со структурами данных. Давайте создадим одну. > > > shell 1 ① ① Все дальнейшее происходит в консоли Python #1. ② Идея в том чтобы создать словарь, который будет представлять что-нибудь полезное, например элемент рассылки Atom. Также я хочу быть уверенным, что он содержит несколько разных типов данных, чтобы раскрыть возможности модуля pickle. Не вчитывайтесь слишком сильно в эти переменные.
③ Модуль time содержит структуру данных (struct_time) для представления момента времени (вплоть до миллисекунд) и функции для работы с этими структурами. Функция strptime() принимает на вход форматированную строку и преобразует ее в struct_time. Эта строка в стандартном формате, но вы можете контролировать ее при помощи кодов форматирования. Для более подробного описания загляните в модуль time. Теперь у нас есть замечательный словарь. Давайте сохраним его в файл. > > > shell ① ① Мы все еще в первой консоли ② Используйте функцию open() для того чтобы открыть файл. Установим режим работы с файлом в 'wb' для того чтобы открыть файл для записи в двоичном режиме. Обернем его в конструкцию with для того чтобы быть уверенным в том что файл закроется автоматически, когда вы завершите работу с ним. ③ Функция dump() модуля pickle принимает сериализуемую структуру данных Python, сериализует ее в двоичный, Python-зависимый формат использует последнюю версию протокола pickle и сохраняет ее в открытый файл. Последнее предложение было очень важным.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|