python-序列化与反序列化(loads、load、dumps、dump)

序列化模块# 序列化方法# 格式转换# 把python中的数据转换成str---序列化# 可以str转换成python的数据---反序列化
json模块
# json所有的语言都通用,它能序列化的数据是有限的:字典列表和元组import json# json.dumps()与json.loads()是一对# json.dump()与json.load()是一对# json.dumps()#序列号 “obj” 数据类型 转换为 JSON格式的字符串# ret = json.dumps({‘k‘:(1,2,3)})# print(repr(ret),type(ret))      #str()是将作用对象“以字符串格式输出”,重在输出;repr()是“显示对象是什么东西”,重在表述。所以在调试程序时常常用后者打印。# ret2 = json.loads(ret)    #将包含str类型的JSON文档反序列化为一个python对象# print(repr(ret2),type(ret2))
# #json.dump()#理解为两个动作,一个动作是将”obj“转换为JSON格式的字符串,还有一个动作是将字符串写入到文件中,也就是说文件描述符fp是必须要的参数 """
# f = open(‘json_file‘,‘w‘)
# json.dump({‘k‘:(1,2,3)},f)
# f.close()
# with open(‘json_file‘) as f:
#     ret = json.load(f)
#     print(ret,type(ret))

# ret = json.dumps((1,2,3,4))
# print(ret)
# s = json.loads(ret)
# print(s)

# a = {‘name‘:‘tom‘,‘age‘:23}
# with open(‘test.json‘,‘w‘,encoding=‘utf-8‘) as f:
#     f.write(json.dumps(a,indent=4))  #indent=4是a在文件中显示几行,默认是0行
# with open("test.json", "r", encoding=‘utf-8‘) as f:
#     aa = json.loads(f.read())       #将包含str类型的JSON文档反序列化为一个python对象"""
#     f.seek(0)
#     bb = json.load(f)       #将一个包含JSON格式数据的可读文件饭序列化为一个python对象
# print(aa)       #{‘name‘: ‘tom‘, ‘age‘: 23}
# print(bb)       #{‘name‘: ‘tom‘, ‘age‘: 23}
pickle模块是python特有的# 也是有dumps() loads()#       dump()  load()使用方法和json一模一样# pickle在python中可以序列化任何数据类型,python专有的不能喝其他语言兼容,结果是bytes# 用pickle序列化的数据,反序列化也必须用pickle
# 总结:# 1.json序列化方法:dumps:无文件操作            dump:序列化+写入文件# 2.json反序列化方法: loads:无文件操作              load: 读文件+反序列化# 3.  json模块序列化的数据 更通用#     picle模块序列化的数据 仅python可用,但功能强大,可以序列号函数# 4.json模块可以序列化和反序列化的数据类型见python对象(obj) 与json对象的对应关系表#     python对象(obj)             json#         dict                        object#         list,tuple                  array#         str                         string#         int, float                  number#         True                        true#         False                       false#         None                         null# 5.格式化写入文件利用indent = 4
shelve模块
# shelve也是python提供给我们的序列化工具,比pickle用起来更简单一些# shelve只提供给我们一个open方法,是用key来访问的,使用起来和字典类似
import shelve
# f = shelve.open(‘shelve_file‘)
# f[‘key‘] = {‘int‘:10,‘float‘:9.5,‘string‘:‘Sample data‘}    #直接对文件句柄操作,就可以存入数据
# f.close()
#
# f1 = shelve.open(‘shelve_file‘)
# existing = f1[‘key‘]
# f1.close()
# print(existing)
# 这个模块有个限制,它不支持多个应用同一时间往同一个DB进行写操作。所以当我们知道我们的应用如果只进行读操作,我们可以让shelve通过只读方式打开DB

# 不支持多个人同时写,支持多个人同时读,如果只是读的化,就设置flag=‘r‘
import shelve
# f = shelve.open(‘shelve_file‘,flag = ‘r‘)
# existing = f[‘key‘]
# f.close()
# print(existing)
# 由于shelve在默认情况下是不会记录待持久化对象的任何修改的,所以我们在shelve.open()时候需要修改默认参数,否则对象的修改不会保存。
# 正常情况下shelve打开的文件句柄感知不到值的修改,设置writeback = True就可以保存修改内容了
# f2 = shelve.open(‘shelve_file‘,writeback=True)
# # print(f2[‘key‘])
# f2[‘key‘][‘new_value‘] = ‘this was not here before‘
# print(f2[‘key‘])
# f2.close()
# 大总结:# json:所有语言通用,能转换的数据类型有限,重要程度  五颗星*****# pickle:只限于python,能转换所有的数据类型     做游戏的时候会用到# shelve:只限于python语言,能转换所有的数据类型,使用方法类似字典

转发:https://www.cnblogs.com/dwenwen/p/7874815.html

原文地址:https://www.cnblogs.com/hemingwei/p/11579265.html

时间: 2024-10-07 22:46:27

python-序列化与反序列化(loads、load、dumps、dump)的相关文章

Python序列化与反序列化-json与pickle

Python序列化与反序列化-json与pickle 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.json的序列化方式与反序列化方式 1>.json序列化 1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90

loads/load,dump/dumps的区别

dump和load是对于json格式的写入和读取,dumps和loads只是类型转换 dump : 是将dict(字典格式)转换为str(字符串格式),并且写入到json文件中 例如: dumps: 是将dict(字典格式)转换为str(字符串格式). 例如: 运行结果: load: 用于从json文件中读取数据 例如: 运行结果: loads: 用于将str(字符串类型)转换为dict(字典类型) 例如: 运行结果: 原文地址:https://www.cnblogs.com/ifiwant/p

python序列化与反序列化——json与pickle

一.定义 序列化是指将对象从内存中取出来写入存储区,如txt文件中,反序列则相反. 二. 应用场景 跨平台数据传输: 保留上一次运行程序时对对象的修改 三. 模块和函数 1. json dumps().dump()(序列化) loads().load() (反序列化) 2. pickle dumps().dump()(序列化) loads().load ()(反序列化) 四.  应用案例 1. pickle 1 import pickle 2 3 info = {"lyrics": &

python序列化与反序列化(json与pickle)

在python中,序列化可以理解为将python中对象的编码格式转换为json(pickle)格式的字符串,而反序列化可以 理解为将json(pickle)格式的字符串转换为python中对象的编码格式 举一个简单的例子,我们在vmvare环境下编写python程序,然后需要临时走开一下,但是我们又不想把这个vmvare关闭,这个时候我们可以选择挂机,这样我们再回来继续操作时候,就可以直接恢复到走之前的状态,那么我们之前编写的代码及vmvare的状态是保存在哪里了呢,实际上是保存在文件当中来了,

python 序列化和反序列化

概念 序列化: 将对象的状态信息转换为可以存储或传输的形式的过程.就是把对象转换成字符串的过程 反序列化: 把字符串转换成python可以识别的数据类型对象的过程 应用 #数据存储 #网络传输 模块 json #通用的序列化格式 #只有少部分数据类型能通过json转换(数字,字符串,列表,字典,元组) #写文件的操作时,如果找不到ascii码的格式,就会自动转成bytes,所以要添加ensure_ascii=False的参数 #能多次写,但不能多次读 import json dic = {'k1

python序列化与反序列化(json、pickle)

1.什么是序列化&反序列化? 序列化:将字典.列表.类的实例对象等内容转换成一个字符串的过程. 反序列化:将一个字符串转换成字典.列表.类的实例对象等内容的过程 PS:Python中常见的数据结构可以统称为容器.序列(如列表和元组).映射(如字典)以及集合(set)是三类主要的容器. 场景一:我们在python中将一个功能给另外一段程序使用,怎么给? 方法一:功能存到文件,然后另一个python程序再从文件里读出来. 场景二:现在反过来怎么把读出来的文件字符串转换成字典? 方法二:eval()函

Python—序列化和反序列化模块(json、pickle和shelve)

什么是序列化 我们把对象(或者变量)从内存中变为可存储或者可传输的过程称为序列化.在python中为pickling,在其他语言中也被称之为serialization,marshalling,flattening等等.即序列化之后就可以将内存中的程序内容写入硬盘或者通过网络传输到其他机器上去.反序列化的过程则相反:将硬盘中的内容变为可以在内存中运行的程序的过程称为反序列化. Json模块 # encoding:utf-8 # 通过序列化和反序列化将内容存储到文件 import json json

接口测试基础三-Python序列化和反序列化

啥是序列化?啥是反序列化?这两个词听起来优点高大上的意思,其实呢不然,很简单的可以理解为: 序列化:将python的数据对象编码转换为json格式的字符串 反序列化:将json格式的字符串解码为python的数据对象 在python中提供了json库,我们将json导入,查看json库下面有哪些方法: >>> import json >>> print (json.__all__) ['dump', 'dumps', 'load', 'loads', 'JSONDeco

Python序列化与反序列化pickle

#要将Python对象作为一个文件的形式保存到磁盘,就叫序列化:#当我们需要用到这个这对象,再从磁盘加载这个对象,就叫反序列化#Python自带的pickle可以帮我们实现,pickle这个单词是咸菜的意思,咸菜耐储存,是不是很形象呀? #对象的存储分为两步:#1.将对象在内存中的数据抓取取来,转换成一个有序的文本,这一步就是序列化#2.再将文本存储到磁盘中 import pickle class Bird(object): have_feather = True reproduction_me

python学习day4之路文件的序列化和反序列化

json和pickle序列化和反序列化 json是用来实现不同程序之间的文件交互,由于不同程序之间需要进行文件信息交互,由于用python写的代码可能要与其他语言写的代码进行数据传输,json支持所有程序之间的交互,json将取代XML,由于XML格式稍微比较复杂.现在程序之间的交互都是用json来进行文件信息的交互. 在使用json序列化和反序列化的时候,dump一次,就要load一次,不能操作. json序列化的过程,就是写入文件中,让另外一个编程语言进行调用: import json in