一直在学习python小兵

导航

json && pickle 反序列化

 

 json 

介绍:序列化将一段命令转换成字符串,上传到文件内,

   用的时候在从文件内把字符串转回命令,

   从而实现一个挂起的功能。

 

案列:

复制代码
#字典
info = {
    'name':'alex',
    'age':'22'
}

#序列化文件
import json
f = open("test.txt","w")
f.write(json.dumps(info))
f.close()

#反序列化文件
f = open("test.txt","r")
import json
data = json.loads(f.read())
print(data["age"])
复制代码

注:通过json模块对命令行与字符串之间的转化。

注:json默认只支持简单的数据类型,字典,字符串,像类,函数无法实现转换。

注:json在不同语言中进行数据交互。

注:json.dumps("命令"):将命令行转换成字符串。

注:json.loads("字符串"):将字符串转回命令。

 

 

 

 pickle 

介绍:序列化将一段命令转换成字符串,上传到文件内,

   用的时候在从文件内把字符串转回命令,

   从而实现一个挂起的功能。

 

案例1:

需求:使用pickle模块,在字典中将函数数据类型进行转换,并调用。

复制代码
 1 #序列化
 2 def xsk():
 3     print("Kevin")
 4 info = {
 5     'name':'alex',
 6     'age':'22',
 7     "Kevin":xsk
 8 }
 9 
10 
11 f = open("test.txt","wb")
12 import pickle
13 f.write(pickle.dumps(info))
14 f.close()
15 
16 #反序列化
17 def xsk():
18     print("66666666")
19 import pickle
20 f = open("test.txt","rb")
21 data = pickle.loads(f.read())
22 data["Kevin"]()
复制代码

 

案例2:

需求:使用pickle,将转换数据导入到,文件中。

复制代码
 1 def xsk():
 2     print("Kevin")
 3 info = {
 4     'name':'alex',
 5     'age':'22',
 6     "Kevin":xsk
 7  }
 8 f = open("test.txt","wb")
 9 import pickle
10 pickle.dump(info,f)
复制代码

 

 

案例3:

需求:使用pickle读取文件中的内容。

复制代码
1 def xsk():
2     print("66666666")
3 import pickle
4 f = open("test.txt","rb")
5 data = pickle.load(f)
6 data["Kevin"]()
复制代码

 

 

二.pickle可支持的python数据格式。

写入

复制代码
import shelve

d = shelve.open("shelve_test")

info = {'age':22}

d["info"] = info
复制代码

 

读取

import shelve

d = shelve.open("shelve_test")

d.get("info")

注:写入文件内容,会固定内存数据。

get是读取指定数据。

items是读取全部数据。

 

注:pickle只有在python语言中可以使用。

注:pickle默认显示二进制需要加上参数b

注:函数在转换的过程中转换的是指定的数据,不是内存地址。两个程序间的内存是不可以访问的。

注:pickle.dumps("命令"):将命令行转换成字符串。

注:pickle.loads("字符串"):将字符串转回命令。

注:pickle.load(文件名):可以实现读取文件的功能。

注:json.load(文件名):可以实现读取文件的功能。

注:写入文件,推荐只写入一次,因为默认只有一行。

注:如果要写入多次,推荐写入到不同的文件内。

 

posted on 2020-10-24 21:07  一直在学习python小兵  阅读(89)  评论(0编辑  收藏  举报