讲解 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 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 模块的更多相关文章
- 模块讲解----json与pickle模块的区别
1.在生产中,dumps和loads只进行一次,而且要用w把原来的数据冲掉,从而保证每次都是最新的. 2.虚拟机的快照,是每个快照都有一个文件,而不是全都不放在一起. 3.如果想生产好几个序列化,就生 ...
- 模块讲解---os模块,sys模块,json和pickle模块,logging模块
目录 模块的用法 os模块 常用的功能 sys模块 常用的功能 json和pickle模块 4. logging模块 模块的用法 通过 import 或者from......import...... ...
- python模块(json和pickle模块)
json和pickle模块,两个都是用于序列化的模块 • json模块,用于字符串与python数据类型之间的转换 • pickle模块,用于python特有类型与python数据类型之间的转换 两个 ...
- python-时间模块,random、os、sys、shutil、json和pickle模块
一.time与datetime模块 time模块: 时间戳:表示的是从1970年1月1日00:00:00开始按秒计算的偏移量,返回类型为float类型 格式化时间字符串(Format String) ...
- Python json和pickle模块
用于序列化的两个模块 json,用于字符串 和 python数据类型间进行转换 pickle,用于python特有的类型 和 python的数据类型间进行转换 Json模块提供了四个功能:dumps. ...
- 包--json 与 pickle 模块
一. 包 一个含有__init__.py 文件的文件夹(将py 文件中的内容划分成不同的部分放在不同的py 文件中,在将这些py 文件放在一个文件夹中) 是模块,不做执行文件,仅做调用 m1.py 和 ...
- Python之时间模块、random模块、json与pickle模块
一.时间模块 1.常用时间模块 import time # 时间分为三种格式 #1.时间戳---------------------以秒计算 # start= time.time() # time.s ...
- python常用模块之json、pickle模块
python常用模块之json.pickle模块 什么是序列化? 序列化就是把内存里的数据类型转换成字符,以便其能存储到硬盘或者通过网络进行传输,因为硬盘或网络传输时只接受bytes. 为什么要序列化 ...
- os模块,sys模块,json和pickle模块,logging模块
目录 OS模块 sys模块 json和pickle模块 序列化和反序列化 json模块 pickle logging模块 OS模块 能与操作系统交互,控制文件 / 文件夹 # 创建文件夹 import ...
随机推荐
- 【题解】P5446 [THUPC2018]绿绿和串串(manacher)
[题解]P5446 [THUPC2018]绿绿和串串(manacher) 考虑对于一个串进行\(f\)操作,就是让他变成一个以最后一个节点为回文中心的回文串. 那么对于某个位置\(p\),假如它是一个 ...
- 1045 快速排序 (25 分)C语言
著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边. 给定划分后的 N 个互不相同的正整数的排列,请问 ...
- linux installer os的驱动更新
installer os的驱动更新 linux系统可以简单的分为installer OS与运行时的OS,安装阶段识别不到硬件设备大概率因为installers OS版本较低,没有驱动来识别新的硬件,可 ...
- 小小知识点(二十)利用MATLAB计算定积分
一重定积分 1. Z = trapz(X,Y,dim) 梯形数值积分,通过已知参数x,y按dim维使用梯形公式进行积分 %举例说明1 clc clear all % int(sin(x),0,pi) ...
- 现状、趋势如何?——《2019 年度 SaaS 行业【企业愿景】展望 · 总结篇》
SaaS 行业产业地图和行业规模 看完SaaS的概念介绍,聪明的小伙伴们应该都理解了SaaS到底是个什么东西,但TOB的应用一般会离生活比较远,这里直接上产业地图,让大家对常见的SaaS产品有一个直观 ...
- Numpy的介绍与基本使用方法
1.什么是Numpy numpy官方文档:https://docs.scipy.org/doc/numpy/reference/?v=20190307135750 NumPy是一个功能强大的Pytho ...
- Python中with标签的使用详解
1.在python DTL模板中,想要定义变量,可以通过"with"语句来实现. 2."with"语句有两种使用方式: 第一种是"with xx=xx ...
- 函数组合的 N 种模式
随着以函数即服务(Function as a Service)为代表的无服务器计算(Serverless)的广泛使用,很多用户遇到了涉及多个函数的场景,需要组合多个函数来共同完成一个业务目标,这正是微 ...
- python 学习爬虫教程~
思路:: (本文没有用xpath定位,xpath需要导入第三方库 from lxml import etree) 1.首先通过urllib类获取到网页的所有内容 2.通过partition获取其中 ...
- leetcode 最大水池
leetcode 11题 水池最大容积 题目描述 给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 ( ...