如何在Python中实现持久化对象?

WBOY
发布: 2023-09-13 12:41:02
转载
1046人浏览过

如何在python中实现持久化对象?

要在Python中实现持久化对象,请使用以下库。

  • 上架
  • 泡菜

搁置模块

“架子”是一个持久的、类似字典的对象。与“dbm”数据库的区别在于,架子中的值(不是键!)本质上可以是任意 Python 对象 - pickle 模块可以处理的任何对象。这包括大多数类实例、递归数据类型以及包含大量共享子对象的对象。

它有一些关键方法 -

  • shelve.open() - 打开持久字典。指定的文件名是基础数据库的基本文件名。副作用是,文件名中可能会添加扩展名,并且可能会创建多个文件。默认情况下,底层数据库文件以读写方式打开。

    立即学习Python免费学习笔记(深入)”;

  • shelve.sync() − 如果使用writeback设置为True打开了shelf,则将缓存中的所有条目写回。如果可行,还会清空缓存并将持久字典与磁盘上的数据同步。当使用close()关闭shelf时,会自动调用此方法。

  • shelve.close() − 同步并关闭持久化字典对象。

pickle 模块

pickle 模块实现了用于序列化和反序列化 Python 对象的二进制协议 结构。

  • Pickling 是将Python对象层次结构转换为字节的过程 流。要序列化一个对象层次结构,只需调用dumps()函数。

  • Unpickling是逆操作。从二进制文件或类似字节对象的字节流中解析出来的 将其转换回对象层次结构。要反序列化数据流,您调用loads()函数 功能。

Pickle 模块功能

以下是pickle模块提供的函数。

  • pickle.dump() - 将对象的pickle表示写入打开的文件对象文件中。

  • pickle.dumps() − 返回对象的pickle表示作为一个字节对象,而不是 将其写入文件中。

  • pickle.load() - 从打开的文件对象文件中读取对象的pickled表示。

  • pickle.loads() - 返回 pickled 表示数据的重构对象层次结构 对象的

示例

首先,导入pickle模块 -

import pickle
登录后复制

我们已经创建了以下输入以进行pickle。

my_data = { 'BMW', 'Audi', 'Toyota', 'Benz'}
登录后复制

demo.pickle 文件已创建。这个相同的 .pickle 文件是用上面的列表进行腌制的。

with open("demo.pickle","wb") as file_handle:
   pickle.dump(my_data, file_handle, pickle.HIGHEST_PROTOCOL)
登录后复制

现在,取消上面的 pickled 文件并获取输入值。

with open("demo.pickle","rb") as file_handle:
   res = pickle.load(file_handle)
   print(res_data)
登录后复制

现在让我们看看完整的示例。

import pickle

# Input Data
my_data = { 'BMW', 'Audi', 'Toyota', 'Benz'}

# Pickle the input
with open("demo.pickle","wb") as file_handle:
   pickle.dump(my_data, file_handle, pickle.HIGHEST_PROTOCOL)

# Unpickle the above pickled file
with open("demo.pickle","rb") as file_handle:
   res = pickle.load(file_handle)
   print(my_data) # display the output
登录后复制

输出

set(['Benz', 'Toyota', 'BMW', 'Audi'])
登录后复制

以上就是如何在Python中实现持久化对象?的详细内容,更多请关注php中文网其它相关文章!

python速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:tutorialspoint网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号