python中json和pickle
1 序列化
把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在python中称之为pickling。序列化之后,就可以把序列后的内容写入到磁盘,或者通过网络传送到别的机器上。
在把数据结构写入到文件中,需要转换成字符串,才能写入;取值的时候也需要使用eval()函数转换,才能进行使用,这样的操作并不方便,所以使用json模块来解决这个问题。
json对函数和类是无法进行转换的。
1.1 写入
1 import json 2 3 dict = {"name":"alex", "age":"18"} 4 data = json.dumps(dict) # json.dump(dict,f) 5 6 f = open("json_test.txt", "w") 7 f.write(data) 8 f.close()
1.2 取值
1 import json 2 3 f = open("json_test.txt", "r") 4 data = f.read() 5 f.close() 6 7 data = json.loads(data) # json.load(f) 8 print(data["name"])
2 pickle模块
2.1 写入
1 import pickle 2 3 4 def foo(): 5 print("我是函数") 6 7 8 data = pickle.dumps(foo) 9 10 f = open("pickle_test.txt", "wb") 11 f.write(data) 12 f.close()
2.2 取出
1 import pickle 2 3 4 def foo(): 5 print("我是函数") 6 7 8 f = open("pickle_test.txt", "rb") 9 data = f.read() 10 data = pickle.loads(data) 11 f.close() 12 13 # foo函数所指向的函数内存地址无法找到,此文件也需要有foo函数 14 data()
3 shelve模块
3.1 写入
1 import shelve 2 3 f = shelve.open("shelve_test.txt") 4 f["info"] = {'name':'alex', 'age':"18"} 5 f.close()
3.2 取值
1 import shelve 2 3 f = shelve.open("shelve_test.txt") 4 5 data = f.get('info') # get()为字典的方法,如果无键值对,则返回None 6 print(data) 7 f.close()