码迷,mamicode.com
首页 > 编程语言 > 详细

Python之路--序列化

时间:2019-02-01 23:01:41      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:ack   持久化   操作   转换   自定义对象   序列   bsp   name   修改   

序列化的目的

1.以某种存储形式使自定义对象持久化
2.将对象从一个地方传递到另一个地方
3.使程序更具有维护性

json

json多语言通用
四个功能:dumps、dump、loads、load

#将对象转换字符串,存储到文件中(dump)
import json
dic = {1:2,3:4,5:6}
f = open(a1.txt,w,encoding=utf-8)
s = json.dump(dic,f)
print(s)
运行结果:
文件中已填写的内容:{"1": 2, "3": 4, "5": 6}
#将文件的字符串转换成原格式输出(load)
f = open(a1.txt,r,encoding=utf-8)
s1 = json.load(f)
print(type(s1),s1)
运行结果:
<class dict> {1: 2, 3: 4, 5: 6}
将对象转换成字符串
import json
lst = [1,2,3,4]
s = json.dumps(lst)
print(type(s),s)
运行结果:
<class str> [1, 2, 3, 4]
#将字符串转换成对象
lst = [1,2,3,4]
s1 = json.loads(s)
print(type(s1),s1)
运行结果:
<class list> [1, 2, 3, 4]

 

pickle

python独有的序列化

#将对象转换为文件(内容是字节,看不懂的字节)
import pickle
f = open(a2.py,wb)
dic = {1:2,3:4}
s = pickle.dump(dic,f)
print(s)
运行结果:文件已填写内容,但是是一串看不懂的字节
#将字节文件转换成对象
f1 = open(a2.py,rb)
s1 = pickle.load(f1)
print(s1)
运行结果:{1: 2, 3: 4}
#将对象转换成字节
import pickle
dic = {1:2,3:4}
s = pickle.dumps(dic)
print(s)
运行结果:b\x80\x03}q\x00(K\x01K\x02K\x03K\x04u.
#将字节转换成对象
s1 = pickle.loads(s)
print(s1)
运行结果:
{1: 2, 3: 4}

 

shelve

shelve序列化,比之前讲的json和pickle都要简单,但是一般是用于自己在本地,若上线的话还需要json,但是它操作简单,比较方便
类似于字典的操作

import shelve
f = shelve.open(a2) 
#创建了3个文件,a2.bak(是备份),这三个文件的内容都不要有任何的修改
f[name] = alex #增加键值对
f[age] = 18
print(f[name])
打印结果:alex
若要修改里面已有的内容,需要特别注意一下,有可能会修改不成功,需要在,open(‘a2‘,writeback = True)

##实现修改name的操作
import shelve
f = shelve.open(a2,writeback=True) 
f[name] = baoyuan
print(f[name])

 

Python之路--序列化

标签:ack   持久化   操作   转换   自定义对象   序列   bsp   name   修改   

原文地址:https://www.cnblogs.com/Ailsa-a/p/10347203.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!