python课堂整理26 ---json、pickle、shelve模块(序列化处理)

一、序列化

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

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

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

二、json模块

功能:处理成字符串

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

import json
dic = {"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 json
dic = {"name": "alex"}
data = json.dumps(dic)
with open("json_txt", "w") as f:
    f.write(data)

或:

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

json方法:loads 和load

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

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

或:

import json
with 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 pickle
dic = {"name": "alex", "age":18}
with open("pickle_test", "wb") as f:
    dic_str = pickle.dumps(dic)
    f.write(dic_str)

loads:

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

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

四、shelve模块

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

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

import shelve
f = 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

时间: 2024-11-05 11:14:33

python课堂整理26 ---json、pickle、shelve模块(序列化处理)的相关文章

python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib subprocess logging re正则

python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib  subprocess logging re正则 转自老男孩老师Yuan:http://www.cnblogs.com/yuanchenqi/articles/5732581.html 模块&包(* * * * *) 模块(modue)的概念: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,

python序列化: json & pickle & shelve 模块

一.json & pickle & shelve 模块 json,用于字符串 和 python数据类型间进行转换pickle,用于python特有的类型 和 python的数据类型间进行转换Json模块提供了四个功能:dumps.dump.loads.loadpickle模块提供了四个功能:dumps.dump.loads.load json模块:下面通过一些示例来学习:首先我们来看json的dumps和loads方法 s1={"k1":"v1"}

Python json & pickle, shelve 模块

json 用于字符串和python的数据类型间的转换 四个功能 dumps dump loads load pickle 用于python特有的类型和python的数据类型进行转换 四个功能 dumps dump loads load shelve 是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式 1 # !/user/bin/python 2 # -*- coding: utf-8 -*- 3 import shelve 4 5 d =

json&pickle&shelve模块

之前我们学习过用eval内置方法可以将一个字符串转成python对象,不过,eval方法是有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,eval就不管用了,所以eval的重点还是通常用来执行一个字符串表达式,并返回表达式的值. 什么是序列化? 我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等等,都是一个意思

json,pickle,shelve模块,xml处理模块

常用模块学习-序列化模块详解 什么叫序列化? 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes. 为什么要序列化? 你打游戏过程中,打累了,停下来,关掉游戏.想过2天再玩,2天之后,游戏又从你上次停止的地方继续运行,你上次游戏的进度肯定保存在硬盘上了,是以何种形式呢?游戏过程中产生的很多临时数据是不规律的,可能在你关掉游戏时正好有10个列表,3个嵌套字典的数据集合在内存里,需要存下来?你如何存?把列表变成文件里的多行多列形式

python开发模块基础:序列化模块json,pickle,shelve

一,为什么要序列化 # 将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化'''比如,我们在python代码中计算的一个数据需要给另外一段程序使用,那我们怎么给?现在我们能想到的方法就是存在文件里,然后另一个python程序再从文件里读出来.但是我们都知道,对于文件来说是没有字典这个概念的,所以我们只能将数据转换成字典放到文件中.你一定会问,将字典转换成一个字符串很简单,就是str(dic)就可以办到了,为什么我们还要学习序列化模块呢?没错序列化的过程就是从dic 变成str(dic)的

Python全栈开发记录_第八篇(模块收尾工作 json & pickle & shelve & xml)

由于上一篇篇幅较大,留下的这一点内容就想在这里说一下,顺便有个小练习给大家一起玩玩,首先来学习json 和 pickle. 之前我们学习过用eval内置方法可以将一个字符串转成python对象,不过,eval方法是有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,eval就不管用了,所以eval的重点还是通常用来执行一个字符串表达式,并返回表达式的值. 什么是序列化? 我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pic

json、pickle\shelve模块讲解

json.pickle模块讲解 见我前面的文章:http://www.cnblogs.com/itfat/p/7456054.html shelve模块讲解(超级好用~!) json和pickle的模块只允许dump和load一次,而shelve可以支持多次. shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式 执行这段代码以后会生成三个文件: 然后我们再把它读取出来:

2018-06-26-Python全栈开发day22-part1-os,json,sys,pickle,shelve模块介绍

1.os模块 1.1 os.getcwd() #获取当前目录 a=os.getcwd() print(a) 1.2 os.chdir() #更改脚本当前目录 os.chdir('path') 1.3 os.makedirs() os.makedirs('dirname1/diename2') 1.4 os.removedirs() 删除文件夹,可以一起删除当前文件下的子文件夹,不为空的话,为空则全删 1.5 os.makedir() 建立单个文件夹 1.6 os.rmdir() 删除单个文件夹