python中的load、loads实现反序列化
load与loads
简介:
在python自动化中,我们传递一些参数是需要从文件中读取过来的,读取过来的字典并非python对象数据类型而是string类型。
这样在我们传递参数的时候就会出现格式不正确的情况,这时候就要用到load实现反序列化
python对象数据类型包括list ,dict,tuple,set等
案例1:load
load:load主要处理的是文件流
首先我们新建一个txt文件,文件中写入一个字典
{"a":"1","b":"2"}
这时候我们用py文件把他读取出来
f = open(r'C:\Users\张天赐\PycharmProjects\pythonProject\test\lianxi\load.txt','r',encoding='utf-8') #通过open打开刚刚新建的txt文档
a = f.read() #读取f文件下所有的内容
print(a) #打印下读取的内容
print(type(a)) #打印下读取内容的格式
返回结果
D:\software\python.exe C:/Users/张天赐/PycharmProjects/pythonProject/test/lianxi/111.py
{"a":"1","b":"2"}
<class 'str'>
可以看到我们读取出来的内容看似字典,但是实际type类型是str类型的,如果在做接口测试的时候,接口需要传输
json格式的数据,这时候就会出现报错的情况。
解决方案:使用load方式,将文件中的数据转换成python对象中的dict字典格式
import json
f = open(r'C:\Users\张天赐\PycharmProjects\pythonProject\test\lianxi\load.txt','r',encoding='utf-8') #通过open打开刚刚新建的txt文档
a = json.load(f) #读取f文件下所有的内容
print(a) #打印下读取的内容
print(type(a)) #打印下读取内容的格式
返回结果
D:\software\python.exe C:/Users/张天赐/PycharmProjects/pythonProject/test/lianxi/111.py
{'a': '1', 'b': '2'}
<class 'dict'>
案例2:loads
loads:loads主要处理的是字符流
正常打印一个字符形式的字典,返回结果为str类型
test = "{'a':'1','b':'2'}"
print(test)
print(type(test))
返回结果
{'a':'1','b':'2'}
<class 'str'>
使用loads将sting类型转换为python可读对象
import json
test = '{"a":"1","b":"2"}'
test1 = json.loads(test)
print(test1)
print(type(test1))
返回结果
{'a': '1', 'b': '2'}
<class 'dict'>
python中的load、loads实现反序列化的更多相关文章
- python中json.load()、json.loads()、json.dump()、json.dumps()的区别
json.load()从文件中读取json字符串 json.loads()将json字符串转换为字典类型 json.dumps()将python中的字典类型转换为字符串类型 json.dump()将j ...
- Python 中数据的序列化和反序列化(json处理)
概念: JSON(JavaScript Object Notation):是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Programming ...
- 解决python中json模块loads出来的结构都是unicode的问题
在使用python的json模块对json字串反序列化成python对象的时候出现的字符串都是unicode类型,而不是python内置的str类型.在某种使用场景下用户必须做显式的转换才能正常使用, ...
- python中class的序列化和反序列化
对于类的序列化:将类的成员变量名和数据作为一对键值对存储在物理内存中,例如 class A(object): def __init__(self): self.a = o self.b = 1 sel ...
- Python中使用json.loads解码字符串时出错:ValueError: Expecting property name: line 1 column 1 (char 1)
解决办法,json数据只能用双引号,而不能用单引号
- Python中json.loads解析包含\n的字符串会出错
用python中的json.loads解析字符串,失败了. [解决过程] 1.调试了半天,终于发现,如果把其中的: "呵呵加那么多连接啊\n\n这个标准还是不错的\n\n给大家推荐一个更多的 ...
- python常见模块-collections-time-datetime-random-os-sys-序列化反序列化模块(json-pickle)-subprocess-03
collections模块-数据类型扩展模块 ''' 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque ...
- (数据科学学习手札142)dill:Python中增强版的pickle
本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,相信不少读者朋友们都在Pyth ...
- python中5个json库的速度对比
python中json的序列化与反序列化有很多库,具体选择使用哪一个,或者哪一个速度更快呢? 先上结果 json序列化与反序列化速度对比(按总时间排序:测试数据100 * 10000) ujson 序 ...
随机推荐
- Structs2的作用是什么??
struts2是一种重量级的框架,位于MVC架构中的controller,可以分析出来,它是用于接受页面信息然后通过内部处理,将结果返回. 同时struts2也是一个web层的MVC框架,那么什么是s ...
- Python__requests模块的基本使用
1 - 安装和导入 pip install requests import requests 2 - requsts的请求方法 requests.get('https://www.baidu.com/ ...
- 这款打怪升级的小游戏,7 年前出生于 GitHub 社区,如今在谷歌商店有 8 万人打了满分
今天我在 GitHub 摸鱼寻找新的"目标"时,发现了一个开源项目是 RougeLike 类的角色扮演游戏「破碎版像素地牢」(Shattered Pixel Dungeon)类似魔 ...
- 前端路由原理之 hash 模式和 history 模式
什么是路由? 个人理解路由就是浏览器 URL 和页面内容的一种映射关系. 比如你看到我这篇博客,博客的链接是一个 URL,而 URL 对应的就是我这篇博客的网页内容,这二者之间的映射关系就是路由. 其 ...
- linux系列之:告诉他,他根本不懂kill
目录 简介 使用kill来杀死进程 kill的深入用法 僵尸进程和kill java thread dump 总结 简介 和很多程序员打过交道,这些程序员可能熟知for遍历的好几种写法,但是却对写出来 ...
- Java XXE漏洞典型场景分析
本文首发于oppo安全应急响应中心: https://mp.weixin.qq.com/s?__biz=MzUyNzc4Mzk3MQ==&mid=2247485488&idx=1&am ...
- ysoserial CommonsColletions1分析
JAVA安全审计 ysoserial CommonsColletions1分析 前言: 在ysoserial工具中,并没有使用TransformedMap的来触发ChainedTransformer链 ...
- call、apply、bind三者比较
var obj={a:1}; var foo={ getA:function(item1,item2){ return this.a+item1+item2 } } // apply绑定参数为数组,一 ...
- CodeForce-702C Cellular Network(查找)
Cellular Network CodeForces - 702C 给定 n (城市数量) 和 m (灯塔数量): 给定 a1~an 城市坐标: 给定 b1~bm 灯塔坐标: 求出灯塔照亮的最小半径 ...
- python 金币小游戏
我最近用python的pygame做了一个金币小游戏 游戏规则:移动挡板接住金币 游戏截图: 代码如下: import pygame.freetype import sys import random ...