Python模块知识4:序列化Json/pickle

原创 2018年01月01日 00:00:00

序列化与反序列化

序列化:把Python的基本数据类型转为字符串

反序列化:把字符串转为Python的基本数据类型


Python中用于序列化的两个模块:

  • json     用于【字符串】和 【python基本数据类型】 间进行转换;由于字符串是各语言通用的,json更适合跨语言;但仅支持dict、list、tuple、str、int、flost、True、False

  • pickle   用于【python特有的类型】 和 【python基本数据类型】间进行转换,支持任何类型,更适合所有类型的序列化,比如面向对象

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

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


关于json:

  • JSON:JavaScript 对象表示法(JavaScript Object Notation)。

  • JSON 是存储和交换文本信息的语法。类似 XML。

  • JSON 比 XML 更小、更快,更易解析


案例1:json转换过程,dumps、loads;内部涉及字符串的时候一定要使用双引号,如li=["a","b"],而不是li=['a','b']

import json
dic={"k1":"v1","k2":"v2"}
print('dic',dic,type(dic))
result=json.dumps(dic) # 将python基本数据类型转为字符串                 
print('result',result,type(result))
dic2=json.loads(result)#将字符串转为基本数据类型 ,                     
print('dic2',dic2,type(dic2))

执行结果:

案例2:json读取并写入文件中,dump、load

import  json
li=["a","b"]
json.dump(li,open('db','w'))#执行结果,db文件中写入li的内容
r=json.load(open('db','r'))#读文件操作
print(r,type(r))

执行结果:

['a', 'b'] <class 'list'>

案例3:基于天气的API获取天气相关的json

import requests
import json
r=requests.get('http://wthrcdn.etouch.cn/weather_mini?city=北京')
r.encoding='utf-8'
dic=json.loads(r.text)
print(dic)

执行结果:


关于pickle的应用:


案例4:pickle的dumps和loads

import pickle
dic={"k1":"v1","k2":"v2"}
print('dic',dic,type(dic))
result=pickle.dumps(dic) # 将python基本数据类型转为字节
print('result',result,type(result))
dic2=pickle.loads(result)#将字符串转为基本数据类型
print('dic2',dic2,type(dic2))

执行结果:


案例5-1:pickle的写入文件和导出文件,类型需要加b

import pickle

li=["a","b"]
pickle.dump(li,open('hh','wb'))#类型需要加b
r=pickle.load(open('hh','rb'))#读文件操作,需要加b
print(r,type(r))

执行结果:

案例5-2:修改导入文件的内容

import pickle
account_info={'a1':['hh',222,20],
'a2':['rr',444,40]
}
pickle.dump(account_info,open('acc.pkl','wb'))
t=pickle.load(open('acc.pkl','rb'))
print ('初次导入',t,type(t))

#修改字典中的一个值,重新存储,再次调用
account_info['a2'][1]=555
account_info['a2'][2]=50
pickle.dump(account_info,open('acc.pkl','wb'))
f=pickle.load(open('acc.pkl','rb'))
print ("修改值",f,type(f))
#添加一个新的字段
account_info['a3']=['ppp',666,60]
pickle.dump(account_info,open('acc.pkl','wb'))
y=pickle.load(open('acc.pkl','rb'))
print ("添加新的值",y,type(y))


案例5-3:对象的pickle使用

案例5-4:jupyter上使用pickle

new_data.to_pickle('C:\\data_0921.pickle')

new_data = pd.read_pickle('C:\\data_0921.pickle')


版权声明:本文为博主原创文章,未经博主允许不得转载。

Python 之 pickle/json序列化

#对象序列化 import pickle d={"a":"中国"} a=pickle.dumps(d,2)#序列化二进制 print a f=open("data","wb") f.write(a) ...
  • VIP_WangSai
  • VIP_WangSai
  • 2016年07月24日 17:00
  • 479

Python中的json与pickle模块

一、基础json和pickle模块是将数据进行序列化处理,并进行网络传输或存入硬盘。import json import pickle pickle模块 python的pickle模块实现了pyt...
  • shuyededenghou
  • shuyededenghou
  • 2017年07月23日 16:29
  • 217

python pickle模块 json模块

python 在在程序运行过程中,所有的变量都是在内存中,内存中的变量可以通过命令操作随意改变,一旦程序结束,变量所占用的内存会被系统全部收回,如果没有把修改的变量存储到磁盘上,下次运行时,变量又被初...
  • qq_36247422
  • qq_36247422
  • 2016年10月12日 21:55
  • 123

python struct、json、pickle模块

(1)json模块 json模块的dumps和dump方法可以将python字典转为符合json数据格式要求的字符串数据,而loads() load()方法可以将json字符串数据转为python字...
  • u010872995
  • u010872995
  • 2016年03月02日 20:58
  • 995

python中使用pickle进行序列化

python的pickle模块实现了基本的数据序列和反序列化。通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储;通过pickle模块的反序列化操作,我们能够从文件...
  • Losteng
  • Losteng
  • 2016年04月29日 13:23
  • 6524

python使用pickle序列化对象至文件

pickle模块用于将内存中的python对象序列化成字节流,并可以写入任何类似文件对象中;它也可以根据序列化的字节流进行反序列化,将字节流还原为内存中的对象。 pickle使用dump方法将内存对...
  • acaiwlj
  • acaiwlj
  • 2015年11月23日 08:51
  • 1400

【python系列】使用pickle进行数据的序列和反序列化

pickle模块简单介绍 python的pickle模块实现了基本的数据序列和反序列化。 通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储;通过pickle模块的...
  • piaoxuefengqi
  • piaoxuefengqi
  • 2014年03月18日 10:28
  • 1213

Python序列化模块pickle

序列化的应用举例: 1.在磁盘上保存当前程序的状态以便重启时能重新加载; 2.多用户或者分布式系统中数据结构的网络传输时,可将数据序列化和后发送给可信的网络对端,接受者反序列化后可恢复相同的对象;...
  • vipkaiz
  • vipkaiz
  • 2017年02月11日 16:24
  • 141

Python数据存储:pickle模块的使用讲解

在机器学习中,我们常常需要把训练好的模型存储起来,这样在进行决策时直接将模型读出,而不需要重新训练模型,这样就大大节约了时间。Python提供的pickle模块就很好地解决了这个问题,它可以序列化对象...
  • coffee_cream
  • coffee_cream
  • 2016年06月24日 17:11
  • 3631

Python:pickle模块(序列化)

pickle泡菜 他几乎可以把python的对象都转化为二进制的形式存放字节流,那么这个过程叫做pickling;这个过程的反过程,从二进制的形式转化为对象的过程叫做unpickling 写入: >>...
  • daduryi
  • daduryi
  • 2017年05月05日 19:17
  • 92
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Python模块知识4:序列化Json/pickle
举报原因:
原因补充:

(最多只允许输入30个字)