讲解 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 ...
随机推荐
- maven常用标签
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- Mac常用的软件推荐
Alfred 效率软件,让能更快的启动各种软件 VScode 编辑器,市面上最热的编辑器,好用的不只是一点点,加上Vim插件简直就是秒杀市面上各种IDE PicGo 一个开源图床软件,支持各大网站的图 ...
- ansible批量部署tomcat
1.1 构建目录结构 此操作是安装nginx+mysql+tomcat+db的目录结构,可以参考一下,不错~ mkdir -p /ansible/roles/{nginx,mysql,tomcat,d ...
- 【题解】Vijos1404 遭遇战(最短路图论套路)
[题解]Vijos1404 遭遇战(最短路图论套路) 感觉一定要有建模的思想,不管什么东西要抽象建模之后再用算法解决... 求最短代价就可能可以用最短路,这句话不是强行解释,而是因为图论建模过后,可能 ...
- 开发工具篇:JAVA和IntelliJ IDEA相恋
开发工具篇:JAVA和IntelliJ IDEA相恋 idea是什么? IDEA 全称 IntelliJ IDEA,是java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之 ...
- Linux学习之路--常用命令
#ls 显示文件信息 #ll 显示文件(不包括隐藏文件)具体信息 等于 #ls -l #ll -a 显示所有文件(包括隐藏文件)具体信息 #ll -htr aa 显示最近修改的文件 h是易读的 ...
- spring boot 中AOP的使用
一.AOP统一处理请求日志 也谈AOP 1.AOP是一种编程范式 2.与语言无关,是一种程序设计思想 面向切面(AOP)Aspect Oriented Programming 面向对象(OOP)Obj ...
- spring boot的application配置文件
上次我们已经对这个文件见过面了,并且对他进行了一些简单的配置.它有两种配置方式,一个是application.properties,一个是application.yml文件,需要记住,当两个文件都 ...
- vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多
一.思路分析和效果图 用vue来实现一个瀑布流效果,加载网络图片,同时有下拉刷新和上拉加载更多功能效果.然后针对这几个效果的实现,捋下思路: 根据加载数据的顺序,依次追加标签展示效果: 选择哪种方式实 ...
- Educational Codeforces Round 80 D E
A了三题,rk1000左右应该可以上分啦,开