首先是引入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 json
dic = {'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 json
def haa():
print('hello den1g1mei')
date = json.dumps(haa) # TypeError: Object of type function is not JSON serializable 显然json不能支持函数的数据转换 虽然json也很不错 但是对于函数也无可奈何 而pickle却可以
mport pickle
def 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 shelve
f = 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'

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

												

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

  1. 模块讲解----json与pickle模块的区别

    1.在生产中,dumps和loads只进行一次,而且要用w把原来的数据冲掉,从而保证每次都是最新的. 2.虚拟机的快照,是每个快照都有一个文件,而不是全都不放在一起. 3.如果想生产好几个序列化,就生 ...

  2. 模块讲解---os模块,sys模块,json和pickle模块,logging模块

    目录 模块的用法 os模块 常用的功能 sys模块 常用的功能 json和pickle模块 4. logging模块 模块的用法 通过 import 或者from......import...... ...

  3. python模块(json和pickle模块)

    json和pickle模块,两个都是用于序列化的模块 • json模块,用于字符串与python数据类型之间的转换 • pickle模块,用于python特有类型与python数据类型之间的转换 两个 ...

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

    一.time与datetime模块 time模块: 时间戳:表示的是从1970年1月1日00:00:00开始按秒计算的偏移量,返回类型为float类型 格式化时间字符串(Format String) ...

  5. Python json和pickle模块

    用于序列化的两个模块 json,用于字符串 和 python数据类型间进行转换 pickle,用于python特有的类型 和 python的数据类型间进行转换 Json模块提供了四个功能:dumps. ...

  6. 包--json 与 pickle 模块

    一. 包 一个含有__init__.py 文件的文件夹(将py 文件中的内容划分成不同的部分放在不同的py 文件中,在将这些py 文件放在一个文件夹中) 是模块,不做执行文件,仅做调用 m1.py 和 ...

  7. Python之时间模块、random模块、json与pickle模块

    一.时间模块 1.常用时间模块 import time # 时间分为三种格式 #1.时间戳---------------------以秒计算 # start= time.time() # time.s ...

  8. python常用模块之json、pickle模块

    python常用模块之json.pickle模块 什么是序列化? 序列化就是把内存里的数据类型转换成字符,以便其能存储到硬盘或者通过网络进行传输,因为硬盘或网络传输时只接受bytes. 为什么要序列化 ...

  9. os模块,sys模块,json和pickle模块,logging模块

    目录 OS模块 sys模块 json和pickle模块 序列化和反序列化 json模块 pickle logging模块 OS模块 能与操作系统交互,控制文件 / 文件夹 # 创建文件夹 import ...

随机推荐

  1. 关于js如果控制标签的字符长度

    js名字长度限定(如限制为50个字符,超过的显示...) var new_playerName = ""; jQuery(".translate").each( ...

  2. Spring Boot 定时+多线程执行

    Spring Boot 定时任务有多种实现方式,我在一个微型项目中通过注解方式执行定时任务. 具体执行的任务,通过多线程方式执行,单线程执行需要1小时的任务,多线程下5分钟就完成了. 执行效率提升10 ...

  3. flask的url处理器(url_defaults和url_value_preprocessor)

    url处理器的作用:对于一部分资源, 你并不是很清楚该如何设定其 URL 相同的部分.例如可能有一些URL包含了几个字母来指定的多国语言语种,但是你不想在每个函数里都手动识别到底是哪个语言 rom f ...

  4. ResponsibilityChainPattern(责任链模式)-----Java/.Net

    职责链模式(称责任链模式)将请求的处理对象像一条长链一般组合起来,形成一条对象链.请求并不知道具体执行请求的对象是哪一个,这样就实现了请求与处理对象之间的解耦

  5. 「CodeForces 476A」Dreamoon and Stairs

    Dreamoon and Stairs 题意翻译 题面 DM小朋友想要上一个有 \(n\) 级台阶的楼梯.他每一步可以上 \(1\) 或 \(2\) 级台阶.假设他走上这个台阶一共用了 \(x\) 步 ...

  6. Codeforces Round #612 (Div. 2)

    https://codeforces.com/contest/1287/ A - Angry Students 题意:求A后面的P最长连续有几个? 题解:? int n; char s[200005] ...

  7. 1072 开学寄语 (20分)C语言

    下图是上海某校的新学期开学寄语:天将降大任于斯人也,必先删其微博,卸其 QQ,封其电脑,夺其手机,收其 ipad,断其 wifi,使其百无聊赖,然后,净面.理发.整衣,然后思过.读书.锻炼.明智.开悟 ...

  8. 【一起学源码-微服务】Ribbon 源码四:进一步探究Ribbon的IRule和IPing

    前言 前情回顾 上一讲深入的讲解了Ribbon的初始化过程及Ribbon与Eureka的整合代码,与Eureka整合的类就是DiscoveryEnableNIWSServerList,同时在Dynam ...

  9. 天天都在用Git,那么你系统学习过吗?(一)学习过程

    你系统学习Git了吗? 使用Mac编程的好处,不是因为Mac长得好看 Git内容学习准备 如果你还没有用Git,就不要写代码了. GitHub仓库的使用. 新员工入职的时候,会让他先用一周的时间去学习 ...

  10. 记录我的 python 学习历程-Day13 匿名函数、内置函数 II、闭包

    一.匿名函数 以后面试或者工作中经常用匿名函数 lambda,也叫一句话函数. 课上练习: # 正常函数: def func(a, b): return a + b print(func(4, 6)) ...