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(文件名):可以实现读取文件的功能。
注:写入文件,推荐只写入一次,因为默认只有一行。
注:如果要写入多次,推荐写入到不同的文件内。