Python中使用pickle库进行数据的序列化存储

举报
小博测试成长之路 发表于 2022/01/29 00:10:02 2022/01/29
【摘要】 学习python的话,是不是有时候需要在本地存储一些数据,今天为大家来介绍一种新的实现方式:那就是使用python自带的pickle库。 先上一段代码来看一下pickle的基本使用: import pickle # pickle的功能:序列化和反序列化 obj = { "userName": "小博", "jo...

学习python的话,是不是有时候需要在本地存储一些数据,今天为大家来介绍一种新的实现方式:那就是使用python自带的pickle库。

先上一段代码来看一下pickle的基本使用:


   
  1. import pickle # pickle的功能:序列化和反序列化
  2. obj = {
  3. "userName": "小博",
  4. "job": "软件测试",
  5. "订阅号": "小博测试成长之路",
  6. "wx": "xiaobotester"
  7. }
  8. # dumps和loads主要是在内存内操作
  9. a1 = pickle.dumps(obj)
  10. print('a1:', type(a1), a1)
  11. b1 = pickle.loads(a1)
  12. print('b1:', type(b1), b1)
  13. # dump和load是从文件内操作
  14. with open("demo.db", "wb") as f:
  15. pickle.dump(obj, f) # dump函数没有返回值
  16. with open("demo.db", "rb") as f2:
  17. b2 = pickle.load(f2)
  18. print("b2:", type(b2), b2)

以上代码运行后的输出结果:


   
  1. a1: <class 'bytes'> b'\x80\x03}q\x00(X\x08\x00\x00\x00userNameq\x01X\x06\x00\x00\x00\xe5\xb0\x8f\xe5\x8d\x9aq\x02X\x03\x00\x00\x00jobq\x03X\x0c\x00\x00\x00\xe8\xbd\xaf\xe4\xbb\xb6\xe6\xb5\x8b\xe8\xaf\x95q\x04X\t\x00\x00\x00\xe8\xae\xa2\xe9\x98\x85\xe5\x8f\xb7q\x05X\x18\x00\x00\x00\xe5\xb0\x8f\xe5\x8d\x9a\xe6\xb5\x8b\xe8\xaf\x95\xe6\x88\x90\xe9\x95\xbf\xe4\xb9\x8b\xe8\xb7\xafq\x06X\x02\x00\x00\x00wxq\x07X\x0c\x00\x00\x00xiaobotesterq\x08u.'
  2. b1: <class 'dict'> {'userName': '小博', 'job': '软件测试', '订阅号': '小博测试成长之路', 'wx': 'xiaobotester'}
  3. b2: <class 'dict'> {'userName': '小博', 'job': '软件测试', '订阅号': '小博测试成长之路', 'wx': 'xiaobotester'}

从上面这段代码运行的结果可以看出,通过pickle序列化存储之后的数据,再次加载出来的时候,还是保留了之前的格式。这个对于我们进行数据处理的时候,方便了很多。

注意事项:

1、pickle只能用于python程序中。(也就是说,将python程序序列化存储的文本文件,用其他语言去解析是会有问题的)

2、在使用的时候,要注意dumps/loads与dump/load的使用区别,前者是在内存中进行操作,后者是在文件中进行操作。

3、pickle是以bytes类型来进行序列化的,dump/dumps方法调用的时候还可以传protocol和fix_imports参数,具体用法可以自行查资料了解一下。

文章来源: xiaobotester.blog.csdn.net,作者:小博测试成长之路,版权归原作者所有,如需转载,请联系作者。

原文链接:xiaobotester.blog.csdn.net/article/details/122725978

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。