首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python中json和pickle模快dumps()、loads()、dump()、load()序列化和反序列化实例

Python中json和pickle模快dumps()、loads()、dump()、load()序列化和反序列化实例

作者头像
王大力测试进阶之路
发布2019-10-25 17:44:32
1.1K0
发布2019-10-25 17:44:32
举报
文章被收录于专栏:橙子探索测试橙子探索测试

在python中,序列化可以理解为:把python的对象编码转换为json格式的字符串,反序列化可以理解为:把json格式字符串解码为python数据对象。在python的标准库中,专门提供了json库与pickle库来处理这部分。

用于序列化的两个模块

json:用于字符串和Python数据类型间进行转换

pickle: 用于python特有的类型和python的数据类型间进行转换

json提供四个功能:dumps,dump,loads,load

pickle提供四个功能:dumps,dump,loads,load

#json.dumps()将一个Python数据结构转换为json #json.loads()将一个JSON编码的字符串转换回一个Python数据结构

data1={'name':'橙子','age':22}
print(type(data1),data1)
#字典序列化为json格式的字符串
data2=json.dumps(data1,ensure_ascii=False)#如果有中文,我们需要加参数处理
print(type(data2),data2)
#json格式的字符串反序列化为字典
data3=json.loads(data2)
print(type(data3),data3)


<class 'dict'> {'name': '橙子', 'age': 22}
<class 'str'> {"name": "橙子", "age": 22}
<class 'dict'> {'name': '橙子', 'age': 22}

#pickle.dumps()将数据通过特殊的形式转换为只有python语言认识的字符串 #pickle.loads()将pickle数据转换为python的数据结构

data4={'name':'荔枝','age':22}
print(type(data4),data4)
# dumps将数据通过特殊的形式转换为只有python语言认识的字符串
data5=pickle.dumps(data4)
print(type(data5),data5)
# loads将pickle数据转换为python的数据结构
data6=pickle.loads(data5)
print(type(data6),data6)


<class 'dict'> {'name': '荔枝', 'age': 22}
<class 'bytes'> b'\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X\x06\x00\x00\x00\xe8\x8d\x94\xe6\x9e\x9dq\x02X\x03\x00\x00\x00ageq\x03K\x16u.'
<class 'dict'> {'name': '荔枝', 'age': 22}

#json (dump,load)文件内容进行序列化和反序列化

list1=['selenium','appium','android','ios','uiautomator']
#json.dump()用于将dict类型的数据转成str,并写入到txt/json文件中。
with open(r'C:\Users\wangli\PycharmProjects\Test\Test\1.txt','w') as f:
    json.dump(list1,f)
#json.load()用于从txt/json文件中读取数据
with open(r'C:\Users\wangli\PycharmProjects\Test\Test\1.txt','r') as f:
    print(json.load(f))

['selenium', 'appium', 'android', 'ios', 'uiautomator']

#pickle(dump,load)文件内容进行序列化和反序列化

list2=['selenium','appium','android','ios']
# dump 将数据通过特殊的形式转换为只有python语言认识的字符串,并写入文件
with open(r'C:\Users\wangli\PycharmProjects\Test\Test\2.txt','wb') as f:
    pickle.dump(list2,f)
# load 从数据文件中读取数据,并转换为python的数据结构
with open(r'C:\Users\wangli\PycharmProjects\Test\Test\2.txt','rb') as f:
    print(pickle.load(f))

['selenium', 'appium', 'android', 'ios']

eval()用法


list1='[1,2,3]'
list2=eval(list1)
list3=str(list2)
print(type(list1),list1,type(list2),list2,type(list3),list3)
tuple1='(1,2,3)'
tuple2=eval(tuple1)
tuple3=str(tuple2)
print(type(tuple1),tuple1,type(tuple2),tuple2,type(tuple3),tuple3)
dict1="{'name':'橙子','age':22}"
dict2=eval(dict1)
dict3=str(dict2)
print(type(dict1),dict1,type(dict2),dict2,type(dict3),dict3)

<class 'str'> [1,2,3] <class 'list'> [1, 2, 3] <class 'str'> [1, 2, 3]
<class 'str'> (1,2,3) <class 'tuple'> (1, 2, 3) <class 'str'> (1, 2, 3)
<class 'str'> {'name':'橙子','age':22} <class 'dict'> {'name': '橙子', 'age': 22} <class 'str'> {'name': '橙子', 'age': 22}

Process finished with exit code 0
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 橙子探索测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档