博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python课堂整理26 ---json、pickle、shelve模块(序列化处理)
阅读量:5257 次
发布时间:2019-06-14

本文共 1720 字,大约阅读时间需要 5 分钟。

一、序列化

我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化,python中叫pickling

序列化之后就可以把序列化后的内容写入磁盘或通过网络传输到别的机器上

反序列化:unpickling,也就是loads的过程

二、json模块

功能:处理成字符串

可以让不同语言间进行数据交换

import jsondic = {"name": "alex"}data = json.dumps(dic)print(data, type(data))

经json处理,就把别的数据类型变为json字符串

json规范的字符串必须使用双引号

处理过程:dic = {‘name’: 'alex'}----> {"name": "alex"} ----> '{"name": "alex"}' (先把所有单引号变为双引号,再在外面加上单引号)

i = 8  #----> '8'

s = 'hello' ----->"hello"----->' "hello" ' 

json方法:  dumps和dump

推荐用dumps,  dump只是简化了一步,只能用于文件处理

import jsondic = {"name": "alex"}data = json.dumps(dic)with open("json_txt", "w") as f:    f.write(data)

或:

import jsondic = {"name": "alex"}# data = json.dumps(dic)with open("json2_txt", "w") as f:    json.dump(dic, f)

json方法:loads 和load

推荐用loads,  load只是简化了一步,只能用于文件处理

import jsonwith open("json_txt","r")as f_read:    data = f_read.read()    data = json.loads(data)    print(type(data))    print(data["name"])

或:

import jsonwith open("json_txt","r")as f_read:    # data = f_read.read()    data = json.load(f_read)    print(type(data))    print(data["name"])

三、pickle 模块

和 json 的功能、方法一样,

区别:pickle是把数据处理成字节, 且支持的数据类型更多,例如: 类,函数...

写入的文件,直接打开是看不懂的

dumps:

import pickledic = {"name": "alex", "age":18}with open("pickle_test", "wb") as f:    dic_str = pickle.dumps(dic)    f.write(dic_str)

loads:

import picklewith open("pickle_test", "rb") as f:    data = f.read()    data = pickle.loads(data)    print(data["age"])

load和dump方法的使用也相同,此处不在赘述

四、shelve模块

和json 、pickle一个系类,内部封装了dumps 和loads, 

可以直接以字典形式写入磁盘内容,再以字典方法读取

import shelvef = shelve.open("shelve_test")f["name"] = "alex"  #将一个键值对写入文件f["stu1"] = {"name":"alvin", "age":18} #将一个键值对写入文件print(f.get("name"))print(f.get("stu1")["age"])

 

转载于:https://www.cnblogs.com/dabai123/p/11334347.html

你可能感兴趣的文章
Dynamics 365中的批量删除作业执行频率可以高于每天一次吗?
查看>>
HDU-4734 F(x)数位dp
查看>>
玩NOILinux
查看>>
docker--container
查看>>
Linux知识扩展二:lsof命令
查看>>
【算法与数据结构】二叉搜索树的Java实现
查看>>
1.3分布式-分布式通讯(序列化)
查看>>
使用JavaScript代码实现各种数据控件的反选功能,不要只做拖控件的菜鸟
查看>>
tcp窗口
查看>>
主数据0
查看>>
org.apache.jasper.JasperException: Unable to compile class for JSP
查看>>
vue--实现跑马灯效果
查看>>
PBT后
查看>>
avalon中的ms-attr?
查看>>
xml中的SQL注入
查看>>
selenium——打开浏览器
查看>>
js中的tostring()方法
查看>>
border-image的拉伸和平铺
查看>>
数学:母函数
查看>>
计算几何:平面最近点对
查看>>