首先是引入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. java_回文检测

    package bao; import java.util.Scanner; public class Work { public static boolean digui(String str1,i ...

  2. Docker容器Centos容器安装openssh

    前面在部署容器,使用docker容器作为jenkins的Slave节点时,会发现在使用centos作为镜像源拉去容器,不能正常连接,最后是因为centos的sshd的问题 下面专门是centos容器安 ...

  3. 洛谷P1220 关路灯 题解 区间DP

    题目链接:https://www.luogu.com.cn/problem/P1220 本题涉及算法:区间DP. 我们一开始要做一些初始化操作,令: \(p[i]\) 表示第i个路灯的位置: \(w[ ...

  4. 洛谷P1776 宝物筛选 题解 多重背包

    题目链接:https://www.luogu.com.cn/problem/P1776 题目大意: 这道题目是一道 多重背包 的模板题. 首先告诉你 n 件物品和背包的容量 V ,然后分别告诉你 n ...

  5. antDeaign-form-getFieldDecorator 使用注意事项

    2020-01-06 antDeaign-form-getFieldDecorator 使用注意事项 一.使用getFieldDecorator之前,必须先使用 Form.create({ })(Fo ...

  6. 12.pyecharts详细使用教程

    官方数据教程: 柱状图-Bar //导入柱状图-Bar from pyecharts import Bar //设置行名 columns = ["Jan", "Feb&q ...

  7. 再也不怕和老外交流了!我用python实现一个微信聊天翻译助手!

    前言 在前面的一篇文章如何用python“优雅的”调用有道翻译中咱们清楚的写过如何一层一层的解开有道翻译的面纱,并且笔者说过那只是脑洞的开始.现在笔者又回来了.当你遇到一些外国小哥哥小姐姐很心动.想结 ...

  8. 在nginx服务器里面搭建好node.js本地服务器后,利用Node.js的FS模块,实现简单数据的写入和读取

    先在server.js里面引入: var fs = require('fs');   然后写入  // 往writeme.txt文件 写入一些内容     fs.writeFile('./writem ...

  9. JavaScript 继承小记

    面向对象编程很重要的一个方面,就是对象的继承.A 对象通过继承 B 对象,就能直接拥有 B 对象的所有属性和方法.这对于代码的复用是非常有用的. 大部分面向对象的编程语言,都是通过“类”(class) ...

  10. express框架中使用nodemon自启动服务

    1.安装nodemon //全局安装 npm install -g nodemon //本地安装 npm install nodemon --save 2.修改package.json配置 " ...