Python之路--序列化

Posted ailsa-a

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python之路--序列化相关的知识,希望对你有一定的参考价值。

序列化的目的

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)
运行结果:bx80x03}qx00(Kx01Kx02Kx03Kx04u.
#将字节转换成对象
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之路--序列化的主要内容,如果未能解决你的问题,请参考以下文章

python之路之前没搞明白4面向对象(封装)

Python之路,Day4 - Python基础4

Python之路--序列化

Python之路72-Django 序列化

《Python学习之路 -- Python基础之切片》

python之路--web--2--Django-10--序列化