Python. Методы сохранения данных.
Запись от Фаер размещена 12.09.2012 в 20:54
Показов 19251
Комментарии 0
Метки python
|
На самом деле Python очень искусен в сохранении различных данных. Конечно, самый простой способ "запоминания" это запись в текстовый файл. Однако данный метод довольно неудобен, поэтому Мы рассмотрим более продуктивные способы. Модуль struct: Вообще-то, этот модуль имеет несколько другую цель, нежели сохранение: он упаковывает данные в строки байтов. Но после упаковки можно уверенно записать результат в файл. Например:
Мы открываем(создаём) файл в режиме записи байтов('wb'). Соединяем основной скрипт со вспомогательным In.py(в котором генерируется и выводится какое-то число) посредством "трубы". Читаем это самое число в переменную data. Переводим полученное число в строку байтов и сохраняем. Обратите внимание: скрипт In.py запустится как дочерний процесс, Ваше участие при этом не требуется(за исключением непосредственно его написания). Подробнее о команде struct.pack('>i',data): '>i' - означает, что Мы запаковываем число int слева направо в байткод.('<...' - запаковка в обратном порядке байтов). Кроме int можно паковать: short(h), string(s), double(d), long(l), char(c), float(f) и некоторые другие типы). В результате Мы получаем строку байтов bdata, которую благополучно записываем в файл. Для того, чтобы эту строку после чтения привести в человеческий вид используем команду unpack():
В общем-то и всё. Однако данный метод не самый эффективный и не самый приятный, особенно если учесть '>...'. Поэтому давайте разберём другое заклинание, основанное на модуле pickle:
Выглядит гораздо проще, чем struct. Чтение записанных данных также дело не мудрёное:
Казалось бы, что ещё нужно? Просто, кратко, понятно, да и структура данных сохраняется. Но проблемы могут возникнуть во время работы с большими базами данных. Модуль pickle сохраняет объекты последовательно. Следовательно, для того чтобы добраться до 10-го объекта, например, нужно будет прочитать предыдущие девять, а это может занять много времени. Поэтому давайте рассмотрим ещё более высокоуровневый модуль shelve. Этот самый модуль позволяет структурировать данные, записываемые в файл, с помощью ключей. Как словарь.
Модуль dbm В Python API имеется модуль, схожий с shelve, но всё же менее мощный. Он позволяет создавать базы данных, по своему устройству похожие на словари. Слабость этого модуля заключается в том, что в создаваемых им файлах можно сохранять только строки текста и строки байтов. В принципе, модуль pickle может перевести в строку байтов практически любой объект, однако после сохранения и обратной загрузки Вы можете получить совсем не то, что сохраняли(так, по крайней мере, утверждают разработчики). Поэтому не стоит злоупотреблять способностями pickle. Вот как модуль dbm выглядит в деле:
| ||||||||||||||||||||||||||||||||||||||||
Метки python
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии


