讲解 json 和 pickle 模块

首先是引入json 和 pickle 的原因是 普通的方法支持的数据类型太少 局限性大  比如下面的例子

dit = {‘name‘:‘deng1mei‘,‘age‘:‘26‘,‘sex‘:‘girl‘}        #创建一个字典dit = str(dit)                                      #将字典字符串化 以方便写入文件# f= open (‘test‘,‘w‘)                      #创建文件# f.write(dit)  #write()                       argument must be str, not dict #写入文件f=open(‘test‘,‘r‘)                       #句柄 读取文件date = f.read()                  #读取print(eval(date)[‘name‘])              #deng1mei  #想用eval将字符串变为原来的字典格式 这样才能通过键来找值

相对而言json就好得多虽然代码数量车不多
import jsondic = {‘name‘:‘deng1mei‘,‘age‘:‘26‘,‘sex‘:‘girl‘}# f= open(‘json_test‘,‘w‘)             #同样的方法创建文件

# date = json.dumps(dic)                #将字典上传为json格式的字符串# f.write(date)                         #将其写入文件#上面两句话等价于 json.dump(dic,f)      #表示将数据转换并写入

f= open(‘json_test‘,‘r‘)                 #读取句柄

date =f.read()                           #将数据读取下来date = json.loads(date)                   #将格式转化为其原本的字典格式#上面两句等价于json.load(f)              #调用句柄读取数据 转黄数据

print(date[‘name‘])                       #deng1mei #按  键 取值

####################看看函数能否读写 #####################import  jsondef haa():    print(‘hello den1g1mei‘)date = json.dumps(haa)  # TypeError: Object of type function is not JSON serializable 显然json不能支持函数的数据转换

虽然json也很不错 但是对于函数也无可奈何 而pickle却可以
mport pickledef haa():    print(‘hello deng1mei1‘)# date=pickle.dumps(haa)        #将函数对象上传转换为pickle的byte类型# f = open(‘pickle_test‘,‘wb‘)  #创建文件句柄  必须用‘wb‘是将其写入为byte类型# f.write(date)                  #能够成功写入 相比json的写入范围大些# f.close()

f = open(‘pickle_test‘,‘rb‘)    #读取句柄 同理需要写成‘rb‘date = f.read()                   #读取数据date = pickle.loads(date)        #转换数据为函数类型date()           #hello deng1mei1 #在本地成功调用了函数 但是上传到其他电脑必须要有相同的函数出现才能调用 所以这有些鸡肋

###‘补充一个模块和pickle差不多但是只有一open函数‘#####返回的是类似字典的对象 key必须是字符串,值可以用python支持的所有类型import shelvef = shelve.open(r‘shelve_test‘)                            #创建文件# f[‘info‘] = {‘name‘:‘l1xl1iu‘,‘age‘:‘34‘,‘sex‘:‘boy‘}     #写入一个内容

date =f.get(‘info‘)                                          #读取内容print(date)  #{‘name‘: ‘l1xl1iu‘, ‘age‘: ‘34‘, ‘sex‘: ‘boy‘}  #输出内容   相对而言shelve 模块用得比较少

总而言之 这两个模块用来将数据写入到文件时的转换  和 从文件上读取数据时的转换比较方便如果出现这种报错
AttributeError: module ‘pickle‘ has no attribute ‘dump‘

那么多半是文件名和模块名字相同了导致找不到函数



原文地址:https://www.cnblogs.com/CIBud/p/12073092.html

时间: 2024-08-01 11:57:32

讲解 json 和 pickle 模块的相关文章

python模块(json和pickle模块)

json和pickle模块,两个都是用于序列化的模块 • json模块,用于字符串与python数据类型之间的转换 • pickle模块,用于python特有类型与python数据类型之间的转换 两个模块,都提供了dumps,dump,loads,load 4个功能 1 import json 2 s = '{"key1":"value1","key2":"value2"}' # ==> 用json模块将字符串转化成其他

json与pickle模块

Python-19 1. json与pickle模块 什么是序列化和反序列化 序列化:是将内存中的数据结构,转换成一种中间格式,将转化后的中间格式存储到硬盘,或者基于网络传输 反序列化:是将硬盘中或者网路中传过来的中间格式,转换成内存中的数据结构 2. 序列化和反序列化有什么用 将状态通过中间格式存储到硬盘,可以保存程序的运行状态 数据可以跨平台交互,不同的编程语言,通过序列化成中间格式就可以互相交互 存到硬盘的文本文件都是字符串,再次使用时,需要将硬盘中的数据转化成以前的数据类型状态 3. j

python-时间模块,random、os、sys、shutil、json和pickle模块

一.time与datetime模块 time模块: 时间戳:表示的是从1970年1月1日00:00:00开始按秒计算的偏移量,返回类型为float类型 格式化时间字符串(Format String) 结构化的时间(struct_time):struct_time元组共有9个元素(年月日时分秒,一年中的第几周,一年中的第几天,夏令时) # print(time.time())#1533962144.060534 # print(time.localtime())#time.struct_time(

shutil模块、json和pickle模块

shutil模块: 高级的文件.文件夹.压缩包处理模块 json和pickle模块 之前学过eval内置方法可以将一个字符串转化成Python对象,但eval方法是有局限性的,对于普通的数据类型,json.loads.eval都可以使用,但遇到特殊类型的时候,eval就不能使用了, 所以eval的重点通常还是用来执行一个字符串表达式,并返回表达式的值. 序列化:我们把对象从内存中变成可存蓄或可传送的过程称为序列化,在Python中叫picking,在其他语言中叫serialization .ma

json和pickle模块

内容目录 一.JSON 1 1.1 json.dumps() 1 1.2 json.loads() 2 1.3 json.dump() 2 1.4 json.load() 3 1.5编码解码规则 5 二.pickle 5 2.1 pickle.dumps() 5 2.2 pickle.loads() 5 2.3 pickle.dump() 6 2.3 pickle.load() 6 一.JSON JSON是一种轻量级的数据交换格式,易于人阅读和编写,也易于机器解析和生成. 1.1 json.du

Python数据对象的编码和解码,json和pickle模块,base64模块的简单使用

1.面向对象 对象:生活中的客观事物 类:对事物的抽象,在代码中实现class类型 类属性:这类事物具有的特点或者属性 类方法:这类事物具有的行为,可以实现的方法 实例:使用之前对类的实例化之后的结果 实例属性:对象具有的一些描述对象或者形容对象的属性,对象具体具有的特性 实例方法:对象具有的方法,行为动作 1.查看对象所拥有的方法 dir(对象) 例如 print(dir(列表))1.类中的实例(类)属性和方法命名风格 属性:名词 方法:动词 2.Python中万物皆对象 _对象名,对象私有化

Python基础-json和pickle模块

一 .序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes 把字符串转化成内存数据类型 叫做反序列化 json 和 pickle 二. 只是把数据类型转化成字符串存到内存里的意义 json.dumps  json.loads 1.把你的内存数据通过网络共享给远程其他人 2.定义了不同语言的交互规则 a.纯文本,坏处,不能共享复杂的数据类型 b.xml,坏处,占用空间大 c.json,简单,可读性好 三.json与pickle的区

Python基础六--JSON, pickle模块

一.JSON 内存中的数据<--->格式json<--->字符类型<--->保存.基于网络传输 1. 将数据转化为str形式:data_str = json.dumps(data): 2. 将str形式数据转化为字典等数据:data = json.loads(data_str): 3. 注意json格式 :data = '{"name":"gangzi"}' : 二.pickle (只应用于Python,不同版本的Python彼此

json、pickle\shelve模块讲解

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