博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python与Json、pickle模块
阅读量:6231 次
发布时间:2019-06-21

本文共 3606 字,大约阅读时间需要 12 分钟。

下面介绍Python如何使用Json、Pickle模块

      这两个模块用于序列化

一、什么是序列化

     #序列化:内存----》字符串 pickle.dumps  、pickle.dump

     将内存中的数据转换为字符串,保存在本地的过程,叫序列化

    #反序列化:字符串-----》内存 pickle.loads  、pickle.load

    从将本地硬盘中的数据读到内存中的过程,叫反序列化

 

二、Python与Json模块

A、json,用于字符串 和 python数据类型间进行转换;

B、Json模块提供了四个功能:dumps、dump、loads、load;

C、示例代码:

import  jsondata={
'k1':123,'k2':'Hello'}#json.dumps 将数据通过特殊的形式转换为所有程序语言都认识的字符串j_str=json.dumps(data) print(j_str)#json.dump 将数据通过特殊的形式转换为所有程序语言都认识的字符串,并写入文件with open('result.json','w') as fp: json.dump(data,fp)

执行结果:

 

三、Python与Pickle模块

A、pickle,用于python特有的类型 和 python的数据类型间进行转换

B、pickle模块提供了四个功能:dumps、dump、loads、load;

C、示例代码:

 

import  pickledata={
'k1':123,'k2':'Hello'}#pickle.dumps 将数据通过特殊的形式转换为只有python程序语言认识的字符串p_str=pickle.dumps(data)print(p_str)#pickle.dump将数据通过特殊的形式转换为只有python语言认识的字符串,并写入文件with open('result.pk','w') as fp: pickle.dump(data,fp)

 执行结果:

 

四、事例演绎:pickle模块

picklein.py:序列化过程

 

import  pickle#往文件只写两种格式数据类型:byte与字符串account={    "id":6225353234,    "credit":15000,#credit card    "balance":8000,    "expire_date":"2020-5-21",    "password":"sdfsf"}# f = open("account.db","w")# f.write(str(account))# print(str(account))# f.close()f = open("account.db","wb")# f.write(pickle.dumps(account))等同下一句语句pickle.dump(account,f)f.close()

 

pickleout.py反序列化过程

#序列化:内存----》字符串  pickle.dumps#反序列化:字符串-----》内存  pickle.loads# f=open("account.db","r")# account=eval(f.read()) #eval数据转换# print(account)# print(account['id'])import  picklef=open("account.db","rb")# account=pickle.loads(f.read())等同下一句语句account=pickle.load(f)print(account)print(account['id'])# account['balance'] -=3400# f = open("account.db","wb")# f.write(pickle.dumps(account))# f.close()

五、事例演绎:json模块

jsonin.py序列化过程:

 

import json as pickle#往文件只写两种格式数据类型:byte与字符串account={    "id":6225353234,    "credit":15000,#credit card    "balance":8000,    "expire_date":"2020-5-21",    "password":"sdfsf"}# f = open("account.db","w")# f.write(str(account))# print(str(account))# f.close()f = open("account.json","w")# f.write(pickle.dumps(account))等同下一句语句pickle.dump(account,f)f.close()

 

jsonout.py反序列化过程:

 

#序列化:内存----》字符串  pickle.dumps#反序列化:字符串-----》内存  pickle.loads# f=open("account.db","r")# account=eval(f.read()) #eval数据转换# print(account)# print(account['id'])import json as picklef=open("account.json","r")# account=pickle.loads(f.read())等同下一句语句account=pickle.load(f)print(account)print(account['id'])# account['balance'] -=3400# f = open("account.db","wb")# f.write(pickle.dumps(account))# f.close()

 

六、Json与Pickle两个模块区别

      A、 Pickle模块支持Python中任何字符

      示例:

import  pickleimport datetime#往文件只写两种格式数据类型:byte与字符串account={    "id":6225353234,    "credit":15000,#credit card    "balance":8000,    "expire_date":"2020-5-21",    "password":"sdfsf",    "register_date":datetime.datetime.now()}# f = open("account.db","w")# f.write(str(account))# print(str(account))# f.close()f = open("account.db","wb")# f.write(pickle.dumps(account))等同下一句语句pickle.dump(account,f)f.close()

执行结果:成功

B、 Json只支持str,int ,float, set ,dict, list, tuple

示例:

 

import json as pickleimport datetime#往文件只写两种格式数据类型:byte与字符串account={    "id":6225353234,    "credit":15000,#credit card    "balance":8000,    "expire_date":"2020-5-21",    "password":"sdfsf",    "register_date":datetime.datetime.now()}# f = open("account.db","w")# f.write(str(account))# print(str(account))# f.close()f = open("account.json","w")# f.write(pickle.dumps(account))等同下一句语句pickle.dump(account,f)f.close()

 执行结果:失败

七、Json与Pickle使用时要注意的地方

        1、从以上的比较来看,这两个模块使用的方式是一样的,唯一区别就是在Python中,Pickle支持全部数据类型,Json支持的数据类型相对比较少

         2、Json与Pickle允许dump多次,也允许load多次,但由于读取时没有循环功能,因为建议最好只允许dump一次。

 

 

      

 

转载于:https://www.cnblogs.com/xkjlive/p/8343450.html

你可能感兴趣的文章
DB2 启用QUIESCE模式
查看>>
C Primer Plus 第8章 字符输入/输出和输入确认 8.3 重定向和文件
查看>>
20160215--新的一年,新的起点。加油!
查看>>
使用class-validator替换Joi包的方法
查看>>
Android 实现类似考试座号表效果
查看>>
MySQL启动与停止[Linux]
查看>>
Go实现FastCgi Proxy Client 系列(四) keep-alive实现
查看>>
程序员必备神器
查看>>
解析:Parallels给Mac电脑带来的好处
查看>>
skycc淘宝客推广软件 V8.2免费版
查看>>
Navicat for MySQL 11 Mac安装教程
查看>>
Navicat 如何调整栏位结构
查看>>
食品安全溯源区块链解决方案探索
查看>>
关于Spring Data JPA的save()保存,MySQL字段默认值无效
查看>>
数据结构——二叉树(PHP)
查看>>
MySQL实时性能监控工具doDBA tools
查看>>
ListView 局部刷新实现思路
查看>>
JSON笔记之在PHP语言中使用JSON
查看>>
函数的指针
查看>>
Jquery AJAX使用踩坑小记
查看>>