Python内置模块---pickle和json序列化

pickle和json序列化

json转换表

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VL1zlljn-1650331762292)(C:\Users\15495\AppData\Roaming\Typora\typora-user-images\1646988995718.png)]

code:

# *******************************************************************
"""
系统内置模块:安装python解释器后,系统给提供的模块,在需要时可以导入后使用,例如:json,re,os等等
序列化模块:
    什么是序列化?为什么需要序列化?
        序列化是指可以把python中的数据,以文本或二进制的方式进行转换,并且还能反序列化为原来的数据。
        一般数据在程序和网络中进行数据传输和存储时,需要更统一和更标准的形式进行存储和传输,因此需要序列化。
    常用序列化模块:
        json---文本序列化模块(广泛使用)
        Pickle---二进制序列化模块(python中常用)
Pickle序列化:
    dumps(var)序列化---返回python对象序列化后的二进制数据
    loads(var)反序列化---返回二进制反序列化后的python对象
    dump(vars,file)序列化---把一个数据对象进行序列化并写入到已打开的文件中
    load(file)反序列化---在已打开的文件中读取序列化的数据,并且进行反序列化,返回反序列化的python对象
json序列化:JavaScript Object Notation
    json是一个受JavaScript对象语法的轻量级数据交换格式
    json是js语言中一个对象的表示方法,和Python中字典的定义规则和语法都很像
    json在互联网中一种通用的数据交换、数据传输、数据定义的一种数据格式
    Python中提供的json模块,可以把一些符合转化你的python数据,转换为json格式的数据
    注意:集合是不可json序列化类型;被json序列化的元组反序列化后会变成列表。

    dumps(vars)---使用json转换表将vars序列化为JSON格式的str。
    loads(vars)---使用json转换表将vars反序列化为Python对象。如果反序列化的数据不是有效JSON文档,引发JSONDecodeError错误。
    dump(vars,file)序列化---使用json转换表将vars序列化为JSON格式化流形式的fp。
    load(file)反序列化---使用json转换表将fp(一个支持.read()并包含一个JSON文档的text file或者binary file)反序列化为一个Python对象。
"""
import pickle
import json
print("Pickle*************************************************************")
print("Pickle dumps()*****************************************************")
var_str = 'i love you'
var_num = 100
var_list = [1,2,3,4,5]
var_tuple = (1,2,3,4,5)
var_dict = {'name':'Jamsine','sex':'girl','year':23}
var_set = {1,2,3,4}
res_str = pickle.dumps(var_str)
res_num = pickle.dumps(var_num)
res_list = pickle.dumps(var_list)
res_tuple = pickle.dumps(var_tuple)
res_dict = pickle.dumps(var_dict)
res_set = pickle.dumps(var_set)
print(f"pickle.dumps(var_str) = {res_str}")
print(f"pickle.dumps(var_num) = {res_num}")
print(f"pickle.dumps(var_list) = {res_list}")
print(f"pickle.dumps(var_tuple) = {res_tuple}")
print(f"pickle.dumps(var_dict) = {res_dict}")
print(f"pickle.dumps(var_set) = {res_set}")
print("Pickle loads()*****************************************************")
res_str_rev = pickle.loads(res_str)
res_num_rev = pickle.loads(res_num)
res_list_rev = pickle.loads(res_list)
res_tuple_rev = pickle.loads(res_tuple)
res_dict_rev = pickle.loads(res_dict)
res_set_rev = pickle.loads(res_set)
print(f"pickle.loads(res_str) = {res_str_rev},{type(res_str_rev)}")
print(f"pickle.loads(res_num) = {res_num_rev},{type(res_num_rev)}")
print(f"pickle.loads(res_list) = {res_list_rev},{type(res_list_rev)}")
print(f"pickle.loads(res_tuple) = {res_tuple_rev},{type(res_tuple_rev)}")
print(f"pickle.loads(res_dict) = {res_dict_rev},{type(res_dict_rev)}")
print(f"pickle.loads(res_set) = {res_set_rev},{type(res_set_rev)}")
print("Pickle dump()*****************************************************")
with open('./data.txt','wb') as fp:
    pickle.dump(var_dict,fp)
print("Pickle load()*****************************************************")
with open('./data.txt','rb') as fp:
    res = pickle.load(fp)
    print(f"pickle.load(fp) = {res},{type(res)}")
print("json*************************************************************")
print("jaon loads()*****************************************************")
res_str = json.dumps(var_str)
res_num = json.dumps(var_num)
res_list = json.dumps(var_list)
res_tuple = json.dumps(var_tuple)
res_dict = json.dumps(var_dict)
print(f"json.dumps(var_str) = {res_str},{type(res_str)}")
print(f"json.dumps(var_num) = {res_num},{type(res_num)}")
print(f"json.dumps(var_list) = {res_list},{type(res_list)}")
print(f"json.dumps(var_tuple) = {res_tuple},{type(res_tuple)}")
print(f"json.dumps(var_dict) = {res_dict},{type(res_dict)}")
print("jaon loads()*****************************************************")
res_str_rev = json.loads(res_str)
res_num_rev = json.loads(res_num)
res_list_rev = json.loads(res_list)
res_tuple_rev = json.loads(res_tuple)
res_dict_rev = json.loads(res_dict)
print(f"json.loads(res_str) = {res_str_rev},{type(res_str_rev)}")
print(f"json.loads(res_num) = {res_num_rev},{type(res_num_rev)}")
print(f"json.loads(res_list) = {res_list_rev},{type(res_list_rev)}")
print(f"json.loads(res_tuple) = {res_tuple_rev},{type(res_tuple_rev)}")
print(f"json.loads(res_dict) = {res_dict_rev},{type(res_dict_rev)}")
print(f"json.loads(res_set) = {res_set_rev},{type(res_set_rev)}")
print("json dump()*****************************************************")
with open('./data.json','w',encoding='utf-8') as fp:
    json.dump(var_dict,fp)
print("json load()*****************************************************")
with open('./data.json','r',encoding='utf-8') as fp:
    res = json.load(fp)
    print(f"json.load(fp) = {res},{type(res)}")

运行结果:

E:\Programs_Way\Python\python.exe D:/Prj/_PythonSelf/Study_Basic_Grammar/_53Built_in_module_serialization.py
Pickle*************************************************************
Pickle dumps()*****************************************************
pickle.dumps(var_str) = b'\x80\x04\x95\x0e\x00\x00\x00\x00\x00\x00\x00\x8c\ni love you\x94.'
pickle.dumps(var_num) = b'\x80\x04Kd.'
pickle.dumps(var_list) = b'\x80\x04\x95\x0f\x00\x00\x00\x00\x00\x00\x00]\x94(K\x01K\x02K\x03K\x04K\x05e.'
pickle.dumps(var_tuple) = b'\x80\x04\x95\x0e\x00\x00\x00\x00\x00\x00\x00(K\x01K\x02K\x03K\x04K\x05t\x94.'
pickle.dumps(var_dict) = b'\x80\x04\x95,\x00\x00\x00\x00\x00\x00\x00}\x94(\x8c\x04name\x94\x8c\x07Jamsine\x94\x8c\x03sex\x94\x8c\x04girl\x94\x8c\x04year\x94K\x17u.'
pickle.dumps(var_set) = b'\x80\x04\x95\r\x00\x00\x00\x00\x00\x00\x00\x8f\x94(K\x01K\x02K\x03K\x04\x90.'
Pickle loads()*****************************************************
pickle.loads(res_str) = i love you,<class 'str'>
pickle.loads(res_num) = 100,<class 'int'>
pickle.loads(res_list) = [1, 2, 3, 4, 5],<class 'list'>
pickle.loads(res_tuple) = (1, 2, 3, 4, 5),<class 'tuple'>
pickle.loads(res_dict) = {'name': 'Jamsine', 'sex': 'girl', 'year': 23},<class 'dict'>
pickle.loads(res_set) = {1, 2, 3, 4},<class 'set'>
Pickle dump()*****************************************************
Pickle load()*****************************************************
pickle.load(fp) = {'name': 'Jamsine', 'sex': 'girl', 'year': 23},<class 'dict'>
json*************************************************************
jaon loads()*****************************************************
json.dumps(var_str) = "i love you",<class 'str'>
json.dumps(var_num) = 100,<class 'str'>
json.dumps(var_list) = [1, 2, 3, 4, 5],<class 'str'>
json.dumps(var_tuple) = [1, 2, 3, 4, 5],<class 'str'>
json.dumps(var_dict) = {"name": "Jamsine", "sex": "girl", "year": 23},<class 'str'>
jaon loads()*****************************************************
json.loads(res_str) = i love you,<class 'str'>
json.loads(res_num) = 100,<class 'int'>
json.loads(res_list) = [1, 2, 3, 4, 5],<class 'list'>
json.loads(res_tuple) = [1, 2, 3, 4, 5],<class 'list'>
json.loads(res_dict) = {'name': 'Jamsine', 'sex': 'girl', 'year': 23},<class 'dict'>
json.loads(res_set) = {1, 2, 3, 4},<class 'set'>
json dump()*****************************************************
json load()*****************************************************
json.load(fp) = {'name': 'Jamsine', 'sex': 'girl', 'year': 23},<class 'dict'>

Process finished with exit code 0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jasmine-Lily

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值