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

在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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/568398.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机编码发展历史和编码方式

编码是信息从一种形式或格式转换为另一种形式的过程&#xff0c;也称为计算机编程语言的代码简称编码。 用预先规定的方法将文字、数字或其它对象编成数码&#xff0c;或将信息、数据转换成规定的电脉冲信号。 编码在电子计算机、电视、遥控和通讯等方面广泛使用。 解码&#x…

解决Error: That port is already in use.

ubuntu系统下&#xff0c;运行一个django项目&#xff0c;即输入python manage.py runserver后&#xff0c;可能出现 Error: That port is already in use.的错误。 即端口号已经被占用,说明servr已经在运行了(也有可能在后台运行) 那么找到该进程,kill掉即可. 或者最简单的…

Jmeter+ForEach控制器+BeanShell取样器+BeanShell PostProcessor爬取网站信息储存csv

1、正则提取器ForEach控制器BeanShell PostProcessorBeanShell 取样器&#xff0c;爬取网站信息并写入到csv中 2、访问网站设置 3、正则提取设置&#xff0c;匹配数字-1代表提取所有符合条件的信息 4、ForEach控制器设置迭代每次提取出来的信息 5、BeanShell PostProcessor设置…

【Python】python3编码方式encode介绍

上一篇文章介绍了计算机编码发展历史和编码方式&#xff0c;现在我们聚焦到python语言中&#xff0c;在最新的Python3版本中&#xff0c;字符串是以Unicode编码的&#xff0c;也就是说&#xff0c;Python的字符串支持多语言。例如&#xff1a; print(我喜欢 computer.encode(u…

telnet用法 测试端口号是否可以使用

方法 1 首先打开控制面板 2 点击程序 3 点击程序与功能 4 点击左边启用或关闭windows功能 5 在telnet客户端打上勾 点击确定 6 winr打开运行 输入cmd 7 打开后输入telnet ip 端口号 如果出来其他窗口则说明这个端口可用。若出现超时&#xff0c;说明这个端口不可用 前提…

Python操作读写txt文件

比较常用的文件读写选项&#xff1a; r读写模式 w写读模式 a追加写模式 a追加读模式&#xff0c;因为文件值在最后&#xff0c;所以需要先seek&#xff08;0&#xff09;到文件开头&#xff0c;然后再读 ‘r’以读的方式打开&#xff0c;只能读文件&#xff0c;若文件不存…

【Python】PyCryptodome模块实现多种加密算法

PyCryptodome是python一个强大的加密算法库&#xff0c;可以实现常见的单向加密、对称加密、非对称加密、非对称加密算法签名和流加密算法。 直接pip安装即可&#xff1a;pip install pycryptodome 官网地址&#xff1a;https://pypi.org/project/pycryptodome/ 一、base64编码…

阿里云 Ubuntu上的mysql运行sql文件来创建表

1、上传sql文件到指定目录 2、登录数据库 mysql -u root -p 3、查看数据库 show databases; 4、创建数据库 create database wlh; 5、对新创建的数据库操作 use wlh; 6、导入sql文件 7、查看数据库中表格 若有你数据库中的表格则导入成功 8、退出数据库操作 或者用quit; …

linux Ubuntu安装ftp并将本地文件上传到云服务器

确认是否已经安装ftp pgrep vsftpd无结果如下图&#xff1a; 2、执行安装 3、查看ftp是否安装成功 systemctl status vsftpd.service 4、 &#xff08;1&#xff09;新建"/home/uftp"目录作为用户主目录 打开"终端窗口"&#xff0c;输入"sudo mkd…

【Python】PyCryptodome模块中5种AES加密模式介绍

分组密码有五种工作体制&#xff1a; 1.电码本模式&#xff08;Electronic Codebook Book (ECB)&#xff09;&#xff1b; 2.密码分组链接模式&#xff08;Cipher Block Chaining (CBC)&#xff09;&#xff1b; 3.计算器模式&#xff08;Counter (CTR)&#xff09;&#xff1b…

Pyhton随机生成测试数据模块faker

1.什么是Faker Faker是一个Python包&#xff0c;开源的GITHUB项目&#xff0c;主要用来创建伪数据&#xff0c;使用Faker包&#xff0c;无需再手动生成或者手写随机数来生成数据&#xff0c;只需要调用Faker提供的方法&#xff0c;即可完成数据的生成。 2.安装Faker pip insta…

linux常见操作命令

1、创建文件夹test &#xff1a; mkdir test 注&#xff1a;批量创建为mkdir -p file1/log 在此目录下创建file1/log 2、创建文件test touch test 3、删除文件test rm -f test 4、删除文件夹test(包括文件夹汇总的文件也会一起删除) rm -rf test 注&#xff1a;一般用…

营业执照、组织机构代码、统一社会信用代码

统一社会信用代码是营业执照注册号。这个是三证合一,一证一码的工商改革结果。 三证合一&#xff1a;是指营业执照,税务登记证,组织机构代码证合并为一张三证合一的营业执照。 一证一码&#xff1a;是将营业执照注册号,税号,组织机构代码证号合并为统一社会信用代码。 统一社会…

【探索篇】测试人员一直疏忽掉的测试用例点,你中枪了吗?

记得当初上测试课程时&#xff0c;老师就讲到头脑风暴&#xff0c;让我们尽情发挥:想象&#xff0c;讲的就是不局限思维、发散、开拓思维&#xff0c;可能发生的情况都可作为输入条件&#xff0c;实际我们运用到工作中&#xff0c;测试用例的设计是一样的道理&#xff0c;不能局…

阿里云root密码修改

一、root密码修改阿里云linux服务器修改root密码流程&#xff1a; 通过Xshell客户端输入账号root&#xff0c;输入密码&#xff0c;登陆到linux。 输入修改密码的命令 passwd 根据提示输入新密码&#xff0c;输入新密码的时候&#xff0c;软件不会显示*号&#xff0c;输入后…

【Android】Windows环境安装Android Studio教程

Android Studio 是谷歌推出的一个Android集成开发工具&#xff0c;基于IntelliJ IDEA. 类似 Eclipse ADT&#xff0c;Android Studio 提供了集成的 Android 开发工具用于开发和调试。 在IDEA的基础上&#xff0c;Android Studio提供&#xff1a; 基于Gradle的构建支持 Android…

数据库的显示、创建、使用 、用户授权管理及忘记root用户后重置密码

1、显示数据库 show databases; 默认的数据库及大致功能&#xff1a; mysql -- 用户权限 相关数据 test --用于用户测试数据 information_schema -MySQL 本身架构相关的数据 2、创建数据库 create database 数据库名称 default charset utf8 collate utf8_general_ci ; 3、…

【Android】Android Studio打包生成正式签名的APK

Android Studio是谷歌推出一个Android集成开发工具&#xff0c;基于IntelliJ IDEA。它类似于Eclipse ADT&#xff0c;Android Studio 提供了集成的Android开发工具用于开发和调试。 那么今天我们就来讲讲如何通过Android Studio打包APK文件&#xff0c;相信有很多人还不是非常了…

Python实现单例

单例模式&#xff08;Singleton Pattern&#xff09;是一种常用的软件设计模式&#xff0c;该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中&#xff0c;某个类只能出现一个实例时&#xff0c;单例对象就能派上用场。 我们在使用class创建类的时候, 只…

mysql添加用户及权限

一、增加权限 mysql> grant 权限1,权限2,...权限n on 数据库名称.表名称 to 用户名用户地址 identified by 连接口令; mysql>flush privileges; (刷新系统权限表) 权限1,权限2,...权限n代表select,insert,update,delete,create,drop,index,alter,grant,references,rel…