json 序列化主要是用于前后端交互
dict/list/int/str ---> json
json.dump() 再次追加的时候容易出问题
pickle 序列化,主要是用于保存文件,pickle 单词本身的意思就是腌制(是把东西腌起来保存成文件,要用的时候读出来洗洗还能用)
优势: 所有的python对象, 变成一个二进制字节流,存储到硬盘(文件中), 用的时候再取出来
缺点: pickle序列化后的数据,可读性差,人一般无法识别。
详细说明
https://blog.csdn.net/chunmi6974/article/details/78392230
应用场景:
session存储 cache 存储, 配置文件上传
安全问题:
https://my.oschina.net/chinahermit/blog/102559
def json_func():
import json
demo_dict = {"name": "小小臭臭g", "age": "20", "number": 20200908}
json_str = json.dumps(demo_dict, ensure_ascii=True)
print(json_str)
print(type(json_str))
python_dict = json.loads(json_str)
print(python_dict)
print(type(python_dict))
from idna import unicode
str2 = "\u5c0f\u5c0f\u81ed\u81edg"
print(unicode(str2))
def pickle_write():
import pickle
demo_dict = [{"name": "小小臭臭g", "age": "22", "number": 20200908}]
ret_str = pickle.dumps(demo_dict)
print(ret_str)
with open("xuliehua.pickle", "ab+") as f:
for i in range(5):
pickle.dump(demo_dict, f)
def pickle_read():
import pickle
with open("xuliehua.pickle", "rb") as f:
for i in range(5):
ret = pickle.load(f)
print(ret)
print(pickle.load(f))
if __name__ == '__main__':
pickle_write()
pickle_read()