Быстрый в изучении - мощный в программировании
Скрипт ИНВЕСТОР на Python

Попробуйте себя в качестве инвестора имея в помощники мощный алгоритм советника на Python...

Все уроки по PyQt5

PyQt5 реализован как комплект Python-модулей. Он включает в себя около 620 классов и 6000 функций и методов...

Скрипт отправки SMS через Python

Была задача отправить SMS-ки большому списку номеров телефона с уточнением цены за всю рассылку "До" ее отправки...

Модуль shelve в Python - сохранение объектов в файл

Модуль shelve в 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 газобетон предоставляется вам по весьма доступным ценам которые позволят вам сэкономить на ремонт. Газобетон имеет отличные качества прочности, фоно-изоляции и термо-изоляции. Прочность стен из газобетона получается благодаря форме газобетона который позволяет в прямом смысле дополнять форму друг друга.

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru yandex.ru
Комментариев: 2
  1. При стройке нового помещения или дополнение уже существующего объекта, чаще уже стал применяется газобетон. Качественный UDK газобетон предоставляе ...........

    что за колхоз !!! НЕ СЕРЬЕЗНО

  2. Vladimir, это не колхоз, это рекламная пауза :)

Оставьте комментарий!

Используйте нормальные имена.

Имя и сайт используются только при регистрации

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email. При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д., а также подписку на новые комментарии.

(обязательно)