python学习第四章之json与pickle数据序列化

1.终于学到json了,简直是万分期待

2.json序列化:json.dumps()

 json反序列化:json.loads()

json对字典、列表、字符串起作用,可以在不同语言间进行交互。

pickle只支持python语言,Java只认识json,一般是dump一次,对应的load一次

3.(1)使用json将字典的一个内容存入文本中,

import json
info={
    ‘name‘:‘alex‘,
    ‘age‘:22
}
f=open("test.text","w")
print(json.dumps(info))
f.write(json.dumps(info))
f.close()

运行后,字典中的内容已经写入到test.text文本中,这时如果要读取改文本中的内容,就要用到反序列化:

import json
f=open("test.text","r")
data=json.loads(f.read())
print(data[‘age‘])

这时读取到的age为22

(2)如果在字典中有函数的内存地址,这时就要用到pickle,其他与json一样

import pickle
def sayhi(name):
    print("hello",name)
info={
    ‘name‘:‘alex‘,
    ‘age‘:22,
    ‘func‘:sayhi
}
f=open("test.text","wb")
print(pickle.dumps(info))
f.write(pickle.dumps(info))
f.close()

反序列为:

import pickle
def sayhi(name):
    print("hello", name)
    print("hello2",name)
f=open("test.text","rb")
data=pickle.loads(f.read())
print(data[‘func‘]("wu"))

(3)而在pickle的序列中,f.write(pickle.dumps(info))与pickle.dump(info,f)是一样的,那么也可以写成如下形式

import pickle
def sayhi(name):
    print("hello",name)
info={
    ‘name‘:‘alex‘,
    ‘age‘:22,
    ‘func‘:sayhi
}
f=open("test.text","wb")
pickle.dump(info,f)     #与f.write(pickle.dumps(info))一样
f.close()

同理反序列化也一样,

import pickle
def sayhi(name):
    print("hello", name)
    print("hello2",name)

f=open("test.text","rb")
data=pickle.load(f)   #data=pickle.loads(f.read())
print(data[‘func‘]("wu"))

好的,完毕

原文地址:https://www.cnblogs.com/wuxiaoru/p/11384575.html

时间: 2024-08-04 04:19:41

python学习第四章之json与pickle数据序列化的相关文章

Python学习第四章

1.类和对象: 类对象支持两种操作:属性引用和实例化. 属性引用:obj.name 构造方法:类会定义一个名为__int__()的特殊方法如下 def  __init__(self):       self.data=[] 类定义了__init__()方法的话,类的实例化操作会自动调用__init__()的方法.如下所示: X=Class() 当然,__init__()方法可以有参数,参数通过__init__()传递到类的实例化操作上.如下所示: class All:     def __ini

python学习第四十八天json模块与pickle模块差异

在开发过程中,字符串和python数据类型进行转换,下面比较python学习第四十八天json模块与pickle模块差异. json 的优点和缺点 优点  跨语言,体积小 缺点 只能支持 int str list tuple dict pickle 的优点和缺点 优点 专门为python设计,支持python所有的数据类型 缺点 只能python使用,存储数据占空间大 文章来自 www.96net.com.cn 原文地址:https://www.cnblogs.com/96net/p/97806

Python学习第四天学习写的小案例(主要是针对 分支/循环的学习)

Python学习第四天学习写的小案例 (2019/07/17) 第一题:使用while循环输出1 2 3 4 5 6 8 9 10 程序代码: s = 0 while s<10: if s==6: s += 1 # 当数字为7的时候输出一个空格出来 print(end=' ') continue s += 1 print(s,end=' ') 运行结果: 1 2 3 4 5 6 8 9 10 第二题: 求1-100的所有数的和 程序代码: count = 0 for i in range(101

python学习-第四天补充-面向对象

python学习-第四天补充-面向对象 python 私有 --name mangling(名字修改.名字) 在命名时,通过使用两个下划线作为开头,可以使得这个变量或者函数编程私有的,但是这个其实的python的伪私有,实际是python通过名字修改来进行的,python会把这样命名的变量或者函数名改为_类名__变量名 class A: __name="hello" t = A(); #print(t.__name) #这样会出现错误,错误提示说这个变量没有__name类型 print

Python-Day4 Python基础进阶之生成器/迭代器/装饰器/Json &amp; pickle 数据序列化

一.生成器 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了.所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间.在Python中,这种一边循环一边计算的机制,称为生成器:generator. 要创建一个generator,有很多种

ICE学习第四步-----客户端请求服务器返回数据

这次我们来做一个例子,流程很简单:客户端向服务器发送一条指令,服务端接收到这条指令之后,向客户端发送数据库中查询到的数据,最终显示在DataGridView上. 根据上一篇文章介绍的Slice语法,我们先来定义ICE文件.我定义两个ICE文件,一个用来描述测试数据库表中属性相关信息,另一个则是请求数据的方法. 结构如下:    定义结构体,和数据库中表的列对应,添加序列(相当于数组类型). 在获取表的方法中注意要记得#include带有结构的ice文件,并把接口函数的返回值类型写成之前定义的数组

Day4 - 迭代器&amp;生成器、装饰器、Json &amp; pickle 数据序列化、软件目录结构规范

---恢复内容开始--- 本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 需求:列表a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],要求把列表里的每个值加1 1 a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 2 b = [] 3 for i in a: 4 b.append(i+1) 5 a = b 6 print(a) 普通青

Json &amp; pickle 数据序列化

前提: 文本文件中只能写入字符串或ascii码格式的内容. info={'name':'zoe','age':18} f=open('test.txt','w') f.write(info) #在文本文件中写入字典格式的内容,执行会报错. f.closed() 变通方式将 f.write(info) 改为 f.write(str(info)). 但是这种写法比较低端. 同时,将文件通过open()读取到环境中,读取进来的还是字符串格式的.上面的操作是序列化,读取文件后的操作时反序列化. f=op

进击的Python【第四章】:Python的高级应用(一)

Python的高级应用(一) 本章内容: 内置函数 生成器 迭代器 装饰器 JSON和PICKLE的简单用法 软件目录结构规范 一.内置函数 1.数学运算类 abs(x) 求绝对值1.参数可以是整型,也可以是复数2.若参数是复数,则返回复数的模 complex([real[, imag]]) 创建一个复数 divmod(a, b) 分别取商和余数注意:整型.浮点型都可以 float([x]) 将一个字符串或数转换为浮点数.如果无参数将返回0.0 int([x[, base]])  将一个字符转换