Python 之 pickle/json序列化 之 2
来源:互联网 发布:清理arp 命令 centos 编辑:程序博客网 时间:2024/05/22 03:51
用于序列化的两个模块:
- json,用于字符串 和 python数据类型间进行转换
- pickle,用于python特有的类型 和 python的数据类型间进行转换
Json模块提供了四个功能:dumps、dump、loads、load
pickle模块提供了四个功能:dumps、dump、loads、load
首先,我们看看python pickle的序列化:
pickle模块实现了基本的数据序列和反序列化。
pickle模块,用于python特有的类型 和 python的数据类型间进行转换
pickle模块提供了四个功能:dumps、dump、loads、load,这里主要介绍pickle.dump()和pickle.load()
pickle.dump()
通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储.
pickle.load()
通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象.
dump() 和 load() 示例:
1 #使用pickle.dump()将数据对象保存到文件 2 3 import pickle //导入pickle模块 4 5 account_info = { //定义account_info字典 6 7 349622541 :['123','15000','15000','normal'], 8 838118461 :['passwd','9000','9000','lock'], 9 10 }11 12 13 pkl_file = open('account.pkl','wb') //定义pkl文件 account.pkl wb表示以二进制写模式打开14 15 pickle.dump(account_info,pkl_file) // 使用pickle.dump函数将account_info字典序列化为account.pkl文件.16 17 pkl_file.close() //关闭pkl_file文件
#使用pickle.load()从文件中重构python对象
1 import pickle2 3 pkl_file = open('account.pkl','rb') //rb表示以二进制读模式打开account.pkl文件.4 5 account_dic = pickle.load(pkl_file)6 print account_dic7 8 pkl_file.close()
9#如果修改了account_info里面的内容,则需要重新打开文件,再dump数据.
10 account_info['349622541'][1] = 18000 #修改字典里面的内容
11 account_info[''349622541''][2] = 2000
12 pkl_file.open('account.pkl','wb') #重新打开文件,再将修改的内容dump进去.
13 pickle.dump(account_info,pkl_file)
14 print account_dic
15 pkl_file.close()
python json 序列化:
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,支持不同程序之间的数据转换.但是只能转换简单的类型如:(列表、字典、字符串、数字、)等,比如日期格式、类对象!json就不行了。
引用模块:
import json
重要函数
- 编码:把一个Python对象编码转换成Json字符串 json.dumps()
- 解码:把Json格式字符串解码转换成Python对象 json.loads()
对简单数据类型的json.dumps()和 json.loads():
import json obj = [[1,2,3],123,123.123,'abc',{'key1':(1,2,3),'key2':(4,5,6)}]p = json.dumps(obj)print repr(obj)print p#################################################################################输出:[[1, 2, 3], 123, 123.123, 'abc', {'key2': (4, 5, 6), 'key1': (1, 2, 3)}][[1, 2, 3], 123, 123.123, "abc", {"key2": [4, 5, 6], "key1": [1, 2, 3]}]通过输出的结果可以看出,简单类型通过encode之后跟其原始的repr()输出结果非常相似,但是有些数据类型进行了改变,例如上例中的元组则转换为了列表。在json的编码过程中,会存在从python原始类型向json类型的转化过程.
import jsond= json.loads(p)print type(decodejson)print d[4]['key1']print d######################################输出:<type 'list'>[1, 2, 3][[1, 2, 3], 123, 123.123, u'abc', {u'key2': [4, 5, 6], u'key1': [1, 2, 3]}]loads方法返回了原始的对象,但是仍然发生了一些数据类型的转化。比如,上例中‘abc’转化为了unicode类型
0 0
- Python 之 pickle/json序列化 之 2
- Python 之 pickle/json序列化
- Python--序列化之pickle
- Python之数据序列化(json、pickle、shelve)
- Python之数据序列化(json、pickle、shelve)
- Python基础知识之json&pickle
- python学习之路(json & pickle 模块 ---序列化,反序列化)
- Python-json与pickle数据序列化
- python序列化模块json和pickle
- Python数据交互之json、pickle、shelve
- python序列化pickle
- c++ python交互之boost.python 简集之序列化(pickle)
- python中内置函数和json、pickle数据序列化
- python 序列化数据:pickle与json ,dumps与loads
- Python中的序列化以及pickle和json模块介绍
- python基础-序列化json、pickle 、shelve三种方式
- json与pickle序列化
- Python模块之pickle
- 设计模式 (8)类图五
- MySQL 运算符
- Xcode误删Images.xcassets文件夹的恢复办法(Assets.xcassets)
- %5C暴库原理
- CSS之Position详解
- Python 之 pickle/json序列化 之 2
- java反射详解
- Opencv图像识别从零到精通(15)-----阈值分割、固定阈值Threshold、自适应阈值分割adaptiveThreshold、OSTU大津法
- Android 中的 Service 全面总结
- Android性能优化
- 计算几何 ( 求多边形面积 )——改革春风吹满地 ( HDU 2036 )
- java反射机制
- Android开发之鬼迷心窍(二)
- Hdu 3183 A magic Lamp( RMQ问题)