21 python基础--文件持久化
发布日期:2021-05-14 12:22:36 浏览次数:18 分类:精选文章

本文共 1737 字,大约阅读时间需要 5 分钟。

持久化 - pickle

序列化(持久化,落地):将程序运行中的信息保存在磁盘上。反序列化则是序列化的逆过程。Pickle是Python提供的序列化模块,常用于将程序中的数据持久化。Pickle.dump用于序列化,Pickle.load用于反序列化。
**序列化案例1**:  
`age = 19`
使用以下代码可以将age序列化并保存到test01.txt文件中。需要注意的是,如果文件不存在,Pickle会自动创建它。
import pickle
with open(r'test01.txt', 'wb') as f:
pickle.dump(age, f)
反序列化时,可以通过以下代码从文件中读取age的值:
with open(r'test01.txt', 'rb') as f:
age = pickle.load(f)
print(age)
序列化案例2:
文件中保存的数据可以是任意数据类型,如列表、元组、对象等。以下案例展示了如何将一个包含多个数据类型的列表序列化并保存到文件中:
a = [19, 'liudana', "i love wangxiaojing", [185, 76]]
with open(r'test01.txt', 'wb') as f:
pickle.dump(a, f)
反序列化时,可以通过以下代码从文件中读取数据:
with open(r'test01.txt', 'rb') as f:
s = pickle.load(f)
print(s)
持久化 - shelve
Shelve是一种类似字典的持久化工具,用于以键值对的形式存储数据。它的使用方式与字典相似,支持通过.open()和.close()方法来打开和关闭文件。通过Shelve,可以方便地管理和存取数据。
以下案例展示了如何使用Shelve进行简单的数据持久化。首先,我们创建一个名为sh.db的文件,并将键值对存储其中:
import shelve
# 打开或创建文件
shv = shelve.open(r'C:\Users\Administrator\Desktop\sh.db')
# 存储数据
shv['one'] = 1
shv['two'] = 2
shv['three'] = 3
shv.close()
读取数据时,可以通过以下代码从文件中获取所存储的键值对:
shv = shelve.open(r'C:\Users\Administrator\Desktop\sh.db')
try:
print(shv['one'])
print(shv['threee'])
except Exception as e:
print("异常发生:%s" % e)
finally:
shv.close()
Shelve有以下特性需要注意:
1. 不支持多个应用同时并行写入。
2. 为了避免该问题,可以在打开文件时设置flag=r的标志位。
3. Shelve文件不会实时同步到磁盘,建议使用writeback=True参数来强制写回数据。
以下案例展示了如何使用writeback=True来确保数据持久化。
# 打开文件并启用writeback
shv = shelve.open(r'shv.db', writeback=True)
try:
k1 = shv['one']
print(k1)
# 如果此时shelve关闭,数据会被写回数据库
k1['eins'] = 100
finally:
shv.close()
# 重新打开文件读取数据
shv = shelve.open(r'shv.db')
try:
k1 = shv['one']
print(k1)
finally:
shv.close()
上一篇:22 python基础--Log日志
下一篇:20 python基础--调试

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月17日 19时37分24秒