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()

 

posted on 2018-04-11 15:39  Artisan正传  阅读(93)  评论(0编辑  收藏  举报