前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >dump和load怎么用?

dump和load怎么用?

作者头像
赵云龙龙
发布2019-11-10 15:26:31
2.3K0
发布2019-11-10 15:26:31
举报
文章被收录于专栏:python爱好部落

在写代码的时候,有的时候不知道什么时候用何种格式,字符串跟对象转换的时候,到底是用dump还是load.dumps或者loads, 每次都是蒙的,要么就去查,一点效率都没有。

现在总结了一下: python里面,json和pickle是两种数据格式,文件格式。他们都可以用dump和dumps来解析,用load和loads来组装。OK,有什么区别呢?

带S和不带S有什么区别呢?没带S的是处理文件的。带S是处理字符串或者对象的。

不带S的是单数,要处理简单的;带S是复数,当然要处理繁杂的。

什么时候用dump?什么时候用load?

dump,这个让我联想到下饺子(Dumplings),一锅就散开了,就是整体分散。(将字典转化为string)

load,这个让我联想到游戏加载(loading),所有文件下载,就是分散到整体。(将string转化为字典)

OK,这样就好记忆多了。年纪大了,没办法,记不住。

JSON

JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。特点:简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

1、json.dumps()和json.loads()是json格式处理函数(可以这么理解,json是字符串)

json.dumps()函数是将一个Python数据类型列表进行json格式的编码(可以这么理解,json.dumps()函数是将字典转化为字符串) json.loads()函数是将json格式数据转换为字典(可以这么理解,json.loads()函数是将字符串转化为字典)

在json的编解码过程中,python 的原始类型与json类型会相互转换,具体的转化对照如下:Python 编码为 JSON 类型转换对应表:

Python

JSON

dict

object

list, tuple

array

str

string

int, float, int- & float-derived Enums

number

True

true

False

false

None

null

JSON 解码为 Python 类型转换对应表:

JSON

Python

object

dict

array

list

string

str

number (int)

int

number (real)

float

true

True

false

False

null

None

2、json.dump()和json.load()主要用来读写json文件函数 实例如下:

代码语言:javascript
复制
import json,time# save data to json filedef store(data):    with open('data.json', 'w') as fw:        # 将字典转化为字符串        # json_str = json.dumps(data)        # fw.write(json_str)        # 上面两句等同于下面这句        json.dump(data,fw)# load json data from filedef load():    with open('data.json','r') as f:        data = json.load(f)        return data

if __name__ == "__main__":    json_data = '{"login":[{"username":"aa","password":"001"},{"username":"bb","password":"002"}],"register":[{"username":"cc","password":"003"},{"username":"dd","password":"004"}]}'    # 函数是将json格式数据转换为字典    data = json.loads(json_data)    store(data)
    data = load()    print(data)

总结:不带s的用于操作文件,带s的用于数据类型的转换。

我一直搞不清pickle有什么用,有json就好了哈,能写文件就可以了啊,专门看了一下,它还是很好用的。

pickle是为了序列化/反序列化一个对象的,可以把一个对象持久化存储。比如你有一个对象,想下次运行程序的时候直接用,可以直接用pickle打包存到硬盘上。或者你想把一个对象传给网络上的其他程序,可以用pickle打包,然后传过去,那边的python程序用pickle反序列化,就可以用了。简单说就是把Python数据变成流的形式。保存为二进制是因为计算机只能字节码,不能识别python的各种数据类型如:列表,元祖,字典等,要想在计算机保存这些python数据类型,就需要将这些数据类型转换成二进制字节码来保存。

pickle 模块特点:

1、只能在python中使用,只支持python的基本数据类型。

2、可以处理复杂的序列化语法。(例如自定义的类的方法,游戏的存档等)

3、序列化的时候,只是序列化了整个序列对象,而不是内存地址。

4、pickle 使用场景:用于python特有的类型和python的数据类型间进行转换

5、pickle 四个功能:dumps,dump,loads,load

pickle模块中常用的方法

1、pickle.dump(obj, file, protocol=None,) # 必填参数obj表示将要封装的对象 # 必填参数file表示obj要写入的文件对象,file必须以二进制可写模式打开,即“wb” # 可选参数protocol表示告知pickler使用的协议,支持的协议有0,1,2,3,默认的协议是添加在Python3中的协议3。

2、pickle.load(file,*,fix_imports=True, encoding="ASCII", errors="strict") # 必填参数file必须以二进制可读模式打开,即“rb”,其他都为可选参数

3、pickle.dumps(obj):# 以字节对象形式返回封装的对象,不需要写入文件中

4、pickle.loads(bytes_object): # 从字节对象中读取被封装的对象,并返回

该模块中最重要的方法:

代码语言:javascript
复制
1、pickle.dump(‘python数据’,‘pickle文件’)    # 将python数据转换并保存到pickle格式的文件内2、pickle.dumps(‘python数据’)    # 将python数据转换为pickle格式的bytes字串3、pickle.load(‘pickle文件’)    # 从pickle格式的文件中读取数据并转换为python类型4、pickle.loads(‘pickle字串’)   # 将pickle格式的bytes字串转换为python的类型

例子

代码语言:javascript
复制
 # dumps功能 import pickle data = ['aa', 'bb', 'cc']   # dumps 将数据通过特殊的形式转换为只有python语言认识的字符串 p_str = pickle.dumps(data) print(p_str)             b'\x80\x03]q\x00(X\x02\x00\x00\x00aaq\x01X\x02\x00\x00\x00bbq\x02X\x02\x00\x00\x00ccq\x03e.

 # loads功能 # loads  将pickle数据转换为python的数据结构 mes = pickle.loads(p_str) print(mes)['aa', 'bb', 'cc']
 # dump功能 # dump 将数据通过特殊的形式转换为只有python语言认识的字符串,并写入文件 with open('D:/tmp.pk', 'w') as f:     pickle.dump(data, f)
 # load功能 # load 从数据文件中读取数据,并转换为python的数据结构 with open('D:/tmp.pk', 'r') as f:     data = pickle.load(f)

好了,希望下次能熟练应用了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python爱好部落 微信公众号,前往查看

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

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

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