Модуль shelve в Python - сохранение объектов в файл
Python для начинающих » Общие вопросы shelve python, объект в файл, работа с объектами python
Модуль shelve Python позволяет сохранять объекты под определенный ключом (задается в виде строки) и определяется интерфейс доступа, сходный со словарями. Для сериализации объекта используется возможности модуля pickle, а чтобы записать получившуюся строку по ключу в файл , применяется модуль anydbm. Все эти действия модуль shelve производит незаметно для нас. Чтобы открыть файл с базой объектов, используется функция open(). Функция имеет следующий формат:
open(<Путь к файлу>[, flag="c"[, protocol=None[, writeback=False]]])
В необязательном параметре flag можно указать один из режимов открытия файла:
- r - Только для чтения
- w - чтение и запись
- c - чтение и запись (значение по умолчанию). Если файл не существует, он будет создан.
- n - чтение и запись. Если файл не существует, он будет создан. Если файл существует, он будет перезаписан.
Функция open() возвращает объект, с помощью которого производится дальнейшая работа с базой данных. Этот объект имеет следующие методы:
close() - закрывает файл с базой данных. В качестве примера создадим файл и сохран6им в нем список кортежа.
>>> import shelve
>>> db = shelve.open("file2.txt")
>>> db['language'] = ['ru', 'rn', 'ua']
>>> db['colors'] = ['red', 'blue', 'green']
>>> db['language'], db['colors']
(['ru', 'rn', 'ua'], ['red', 'blue', 'green'])
>>> db.close()
- keys() и values() - позволяют получить список всех ключей и значений соответственно. Можно также воспользоваться методами iterkeys() и itervalues(), которые возвращают не список ключей и значений, а итератор.
- items() - возвращает список кортежей. Каждый кортеж содержит ключ и значение. Можно также воспользоваться методом iteritems(), который возвращает итератор.
- has_key(<Ключ>) - проверяет существование указанного ключа. Если ключ найден, то возвращается значение True, в противном случае - False. Пример:
>>> db = shelve.open('base2.txt')
>>> db = shelve.open('file2.txt')
>>> db.keys(), db.values()
(['colors', 'language'], [['red', 'blue', 'green'], ['ru', 'rn', 'ua']])
>>> db.items()
[('colors', ['red', 'blue', 'green']), ('language', ['ru', 'rn', 'ua'])]
>>> db.has_key('language'), db.has_key('cars')
(True, False)
>>> db.close()
get(<Ключ>[, <Значение по умолчанию>]) - если ключ присутствует, то метод возвращает значение, соответствующее этому ключу. Если ключ отсутствует, то возвращается значение None или значение, указанное во втором параметре.
pop(<Ключ>[, <Значение по умолчанию>]) - удаляет элемент с указанным ключом и возвращает его значение. Если ключ отсутствует, то возвращается значение из второго параметра. Если ключ отсутствует и второй параметр не указан, то возбуждается исключение KeyError.
Помимо этих методов можно воспользоваться функцией len() для получения количества элементов и оператором del для удаления определенного элемента.
>>> db = shelve.open('file2.txt')
>>> len(db)
2
>>> del db['colors']
>>> db.close()
При стройке нового помещения или дополнение уже существующего объекта, чаще уже стал применяется газобетон. Качественный UDK газобетон предоставляется вам по весьма доступным ценам которые позволят вам сэкономить на ремонт. Газобетон имеет отличные качества прочности, фоно-изоляции и термо-изоляции. Прочность стен из газобетона получается благодаря форме газобетона который позволяет в прямом смысле дополнять форму друг друга.
- Алгоритм расшифровки названии автомобилей в игре "Что за тачка?" на Python
- Оптимизация для поисковых систем, первый шаг к продвижению
- Как воспроизвести аудио (.mp3) на Python
- Python работа с FTP - Модуль ftplib
- Обработка строк в Python
- Как определить мощности виртуального сервера для своего проекта?
- Разработка компьютерной программы
При стройке нового помещения или дополнение уже существующего объекта, чаще уже стал применяется газобетон. Качественный UDK газобетон предоставляе ...........
что за колхоз !!! НЕ СЕРЬЕЗНО
Vladimir, это не колхоз, это рекламная пауза :)
у меня с этой стройкой в голове уже начали выстраиваться связи с полками и устройством модуля shelve 8()
нормальный газобетон
Гаааазобееееетооооооооннн!!!111111!!одынодын
Воистину газобетон!
Газобетон что за бред, я это читаю, оказывается это не входит в тему