pyhton模块-shelve

1. 概述

Python的shelve模块提供了一种简单的方式来持久化存储Python对象。它通过使用类似字典的接口,允许我们将Python对象作为值与任意可哈希的键相关联,并将其保存到磁盘上的文件中。shelve模块使用pickle来序列化和反序列化对象,因此可以存储几乎任何Python对象。

2. 创建和打开shelve文件

要使用shelve模块,我们首先需要创建一个新的shelve文件或者打开一个已经存在的shelve文件。我们可以通过使用shelve.open函数来完成这个任务。该函数的第一个参数是shelve文件的名称,如果文件不存在,则会创建一个新文件,如果文件已经存在,则会打开该文件。

import shelve

# 创建新的shelve文件

db = shelve.open('my_db')

# 打开已存在的shelve文件

db = shelve.open('existing_db')

3. 存储和检索数据

一旦我们打开了shelve文件,我们就可以像操作字典一样,使用键来存储和检索数据。shelve文件支持几乎所有Python对象,包括列表、字典、类对象等。

db['key1'] = 'value1'

db['key2'] = [1, 2, 3]

db['key3'] = {'name': 'John', 'age': 30}

print(db['key1']) # 输出 'value1'

print(db['key2']) # 输出 [1, 2, 3]

print(db['key3']) # 输出 {'name': 'John', 'age': 30}

4. 删除和修改数据

我们可以通过使用del关键字来删除shelve文件中的数据。

del db['key1']

如果我们想修改shelve文件中的数据,只需重新分配一个新的值给相应的键即可。

db['key2'] = [4, 5, 6]

5. 在shelve文件中存储对象

shelve模块使用pickle来将Python对象序列化为字节流,并将其存储在磁盘上。因此,我们可以存储几乎所有Python对象。

例如,我们可以存储自定义对象:

class Person:

def __init__(self, name, age):

self.name = name

self.age = age

person = Person('John', 30)

db['person'] = person

retrieved_person = db['person']

print(retrieved_person.name) # 输出 'John'

print(retrieved_person.age) # 输出 30

当我们获取存储的对象时,shelve模块会创建一个新的对象并将存储的值复制给它,所以最终我们将会得到一个新的对象实例。

6. shelve文件的关闭

在我们不再需要访问shelve文件时,我们应该显式地关闭它。这是因为shelve模块在内存中使用了缓存,只有在关闭文件时,才会将缓存中的数据写入磁盘。

db.close()

7. 总结

shelve模块为我们提供了一种简单的方法来持久化存储Python对象。它使用类似字典的接口,并且可以存储几乎任何Python对象。我们可以使用shelve模块来创建、打开、存储和检索数据,并且可以对数据进行删除和修改。

在使用shelve模块时,需要注意及时关闭文件以确保数据的完整性。

后端开发标签