简单谈谈Python中的json与pickle
这是用于序列化的两个模块:
• json: 用于字符串和python数据类型间进行转换
• pickle: 用于python特有的类型和python的数据类型间进行转换
Json 模块提供了四个功能:dumps、dump、loads、load
pickle 模块提供了四个功能:dumps、dump、loads、load
import pickle data = {'k1':123, 'k2':888} #dumps可以将数据类型转换成只有python才认识的字符串 p_str = pickle.dumps(data) print p_str 输出结果: (dp0 S'k2' p1 I888 sS'k1' p2 I123 s.
将数据转换成只有Python认识的字符串,并写入文件:
import pickle data = {'k1':123, 'k2':888} #打开文件,然后将data写入 with open('data.pkl', 'wb') as f: pickle.dump(data, f) #同样读取的时候也需要打开文件 with open('data.pkl', 'rb') as f: data_1 = pickle.load(f) print data_1 结果: {'k2': 888, 'k1': 123} 文件中显示的内容与上面一致
json的用法和pickle是一样的
import json data = {'k1':123, 'k2':888} p_str = json.dumps(data) print p_str, type(p_str) 结果: {"k2": 123, "k1": 888} <type 'str'>
看起来好像是个字典,但要注意了,实际上这是个字符串,因为json只能是字符串格式,只是看起来像字典而已。
import json data = {'k1':123, 'k2':123} #打开文件,然后将data写入 with open('data.pkl', 'w') as f: json.dump(data, f) #同样读取的时候也需要打开文件 with open('data.pkl', 'r') as f: data_1 = json.load(f) print(data_1, type(data_1)) 结果: ({u'k2': 123, u'k1': 123}, <type 'dict'>)
能够读取出来,而且类型也是正确的。
那pickle和json有什么区别呢?
在上面两段代码中,pickle写入和读取文件时,用的是 ‘b'模式,而json没有。
json是可以在不同语言之间交换数据的,而pickle只在python之间使用。
json只能序列化最基本的数据类型,而pickle可以序列化所有的数据类型,包括类,函数都可以序列化。
以上这篇简单谈谈Python中的json与pickle就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
python对DICOM图像的读取方法详解
DICOM介绍 DICOM3.0图像,由医学影像设备产生标准医学影像图像,DICOM被广泛应用于放射医疗,心血管成像以及放射诊疗诊断设备(X射线,CT,核磁共振,超声等),并且在眼科和牙科等其它医学领域得到越来越深入广泛的应用.在数以万计的在用医学成像设备中,DICOM是部署最为广泛的医疗信息标准之一.当前大约有百亿级符合DICOM标准的医学图像用于临床使用. 看似神秘的图像文件,究竟是如何读取呢?网上随便 一搜,都有很多方法,但缺乏比较系统的使用方法,下文综合百度资料,结合python2.7,
-
Python基础教程之浅拷贝和深拷贝实例详解
Python基础教程之浅拷贝和深拷贝实例详解 网上关于Python的深拷贝和浅拷贝的文章很多,这里对三种拷贝进行比较并附实例,大家可以参考下 一般的复制 #encoding:utf-8 #定义一个嵌套集合 lista=[1,2,3,[4,5,6,[7,8,9]]] listb=lista #分别打印出 lista和listb的地址值 print id(lista) #4511103096 print id(listb) #4511103096 #修改lista中的内容,li
-
Python使用plotly绘制数据图表的方法
导语:使用 python-plotly 模块来进行压测数据的绘制,并且生成静态 html 页面结果展示. 不少小伙伴在开发过程中都有对模块进行压测的经历,压测结束后大家往往喜欢使用Excel处理压测数据并绘制数据可视化视图,但这样不能很方便的使用web页面进行数据展示.本文将介绍使用python-plotly模块来进行压测数据的绘制,并且生成静态html页面方便结果展示. Plotly简介 Plotly是一款使用JavaScript开发的制图工具,提供了与主流数据分析语言交互的API(如:Pyt
-
Python 的类、继承和多态详解
类的定义 假如要定义一个类 Point,表示二维的坐标点: # point.py class Point: def __init__(self, x=0, y=0): self.x, self.y = x, y 最最基本的就是 __init__ 方法,相当于 C++ / Java 的构造函数.带双下划线 __ 的方法都是特殊方法,除了 __init__ 还有很多,后面会有介绍. 参数 self 相当于 C++ 的 this,表示当前实例,所有方法都有这个参数,但是调用时并不需要指定. >>&g
-
python实现rsa加密实例详解
python实现rsa加密实例详解 一 代码 import rsa key = rsa.newkeys(3000)#生成随机秘钥 privateKey = key[1]#私钥 publicKey = key[0]#公钥 message ='sanxi Now is better than never.' print('Before encrypted:',message) message = message.encode() cryptedMessage = rsa.encrypt(messag
-
Python实现excel转sqlite的方法
本文实例讲述了Python实现excel转sqlite的方法.分享给大家供大家参考,具体如下: Python环境的安装配置就不说了,个人喜欢pydev的开发环境. python解析excel需要使用第三方的库,这里选择使用xlrd 先看excel内容: 然后是生成的数据库: 下面是源代码: #!/usr/bin/python # encoding=utf-8 ''''' Created on 2013-4-2 @author: ting ''' from xlrd import open_wor
-
JPype实现在python中调用JAVA的实例
一.JPype简述 1.JPype是什么? JPype是一个能够让 python 代码方便地调用 Java 代码的工具,从而克服了 python 在某些领域(如服务器端编程)中的不足. 2.JPype与Jython(JPython后继者)的区别? 1)运行环境不同:jython运行在jvm上,而JPype的实际运行环境仍然是python runtime,只是在运行期间启动了一个嵌入的jvm: 2)使用者不同:jython是给java程序玩的,JPype是给python程序员玩的. 二.JPype
-
python 换位密码算法的实例详解
python 换位密码算法的实例详解 一前言: 换位密码基本原理:先把明文按照固定长度进行分组,然后对每一组的字符进行换位操作,从而实现加密.例如,字符串"Error should never pass silently",使用秘钥1432进行加密时,首先将字符串分成若干长度为4的分组,然后对每个分组的字符进行换位,第1个和第3个字符位置不变,把第2个字符和第4个字符交换位置,得到"Eorrrs shluoden v repssa liseltny" 二 代码:
-
简单谈谈Python中的json与pickle
这是用于序列化的两个模块: • json: 用于字符串和python数据类型间进行转换 • pickle: 用于python特有的类型和python的数据类型间进行转换 Json 模块提供了四个功能:dumps.dump.loads.load pickle 模块提供了四个功能:dumps.dump.loads.load import pickle data = {'k1':123, 'k2':888} #dumps可以将数据类型转换成只有python才认识的字符串 p_str = pickle.
-
简单谈谈python中的语句和语法
python程序结构 python"一切皆对象",这是接触python听到最多的总结了.在python中最基层的单位应该就是对象了,对象需要靠表达式建立处理,而表达式往往存在于语句中,多条语句组成代码块,多个代码块再组成一整个程序.python的核心其实是由语句和表达式组成.所以在这里简单探讨一下python中的语句和表达式. 因为以后可能会接触到两个版本的python,所以这里讲一讲python2与python3的语句差异: 1.python2中没有nolocal语句. 2.prin
-
简单谈谈python中的lambda表达式
最近在coding时发现使用lambda还是有诸多优点的,很多时候代码更整洁,更pythonic,所以在此简单总结一下 1.lambda是什么 举个简单的例子: func = lambda x: x*x def func(x): return x*x 两个func的定义是完全相同的,那两种函数定义方法配合map使用,将list中所有元素求平方,代码会是什么样的, def func(x): return x*x map(func, [i for i in range(10)]) map(lambd
-
简单谈谈Python中的反转字符串问题
按单词反转字符串是一道很常见的面试题.在Python中实现起来非常简单. def reverse_string_by_word(s): lst = s.split() # split by blank space by default return ' '.join(lst[::-1]) s = 'Power of Love' print reverse_string_by_word(s) # Love of Power s = 'Hello World!' print reverse_stri
-
简单谈谈Python中的闭包
Python中的闭包 前几天又有人留言,关于其中一个闭包和re.sub的使用不太清楚.我在我们搜索了下,发现没有写过闭包相关的东西,所以决定总结一下,完善Python的内容. 1. 闭包的概念 首先还得从基本概念说起,什么是闭包呢?来看下维基上的解释: 复制代码 代码如下: 在计算机科学中,闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数.这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外.所以,有另一种说法认为闭包是由函
-
简单谈谈Python中的模块导入
目录 模块与包 __import__ 模块缓存 imp 与 importlib 模块 惰性导入 总结 参考资料 本文不讨论 Python 的导入机制(底层实现细节),仅讨论模块与包,以及导入语句相关的概念.通常,导入模块都是使用如下语句: import ... import ... as ... from ... import ... from ... import ... as ... 一般情况下,使用以上语句导入模块已经够用的.但是在一些特殊场景中,可能还需要其他的导入方式.例如 Pytho
-
简单谈谈Python中函数的可变参数
前言 在Python中定义函数,可以用必选参数.默认参数.可变参数和关键字参数,这4种参数都可以一起使用,或者只用其中某些,但是请注意,参数定义的顺序必须是:必选参数.默认参数.可变参数和关键字参数. 可变参数( * ) 可变参数,顾名思义,它的参数是可变的,比如列表.字典等.如果我们需要函数处理可变数量参数的时候,就可以使用可变参数. 我们在查看很多Python源码时,经常会看到 某函数(*参数1, **参数2)这样的函数定义,这个*参数和**参数就是可变参数,一时会让人有点费解.其实只要把函
-
简单谈谈Python中的几种常见的数据类型
计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据,需要定义不同的数据类型.在Python中,能够直接处理的数据类型有以下几种: 一.整数 Python可以处理任意大小的整数,当然包括负整数,在Python程序中,整数的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等. 计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用0
-
简单谈谈Python中的元祖(Tuple)和字典(Dict)
前言 本文记录了对于Python的数据类型中元祖(Tuple)和字典(Dict)的一些认识,以及部分内置方法的介绍.下面话不多说,来看看详细的介绍吧. 元祖 Tuple 特点:元祖内的数据不可变 一个元素的定义:T = (1,) >>> T=(1,) >>> type(T) <type 'tuple'> 特殊的元祖:"可变"的元祖 >>> T=(1,2,3,[1,2,3]) >>> T[3][2] =
-
简单谈谈python中的Queue与多进程
最近接触一个项目,要在多个虚拟机中运行任务,参考别人之前项目的代码,采用了多进程来处理,于是上网查了查python中的多进程 一.先说说Queue(队列对象) Queue是python中的标准库,可以直接import 引用,之前学习的时候有听过著名的"先吃先拉"与"后吃先吐",其实就是这里说的队列,队列的构造的时候可以定义它的容量,别吃撑了,吃多了,就会报错,构造的时候不写或者写个小于1的数则表示无限多 import Queue q = Queue.Queue(10
随机推荐
- ASP IE地址栏参数的判断
- [Oracle] 如何使用触发器实现IP限制用户登录
- Python中函数参数设置及使用的学习笔记
- 浅谈JS 数字和字符串之间相互转化的纠纷
- ASP.NET Forms身份认证
- dhtmlxTree目录树增加右键菜单以及拖拽排序的实现方法
- Python判断直线和矩形是否相交的方法
- ECMAScript 5严格模式(Strict Mode)介绍
- Android AsyncTask完全解析 带你从源码的角度彻底理解
- Linux学习之CentOS(二十二)--进入单用户模式下修改Root用户的密码
- JavaScript跨域调用基于JSON的RESTful API
- 在B/S开发中经常用到的JavaScript技术第1/3页
- SQL有外连接的时候注意过滤条件位置否则会导致网页慢
- Linux服务器tomact 8.0启动慢的完美解决方法
- Jquery uploadify 多余的Get请求(404错误)的解决方法
- 浅析Android手机卫士之抖动输入框和手机震动
- Android 游戏引擎libgdx 资源加载进度百分比显示案例分析
- PHP 增加了对 .ZIP 文件的读取功能
- Android之有效防止按钮多次重复点击的方法(必看篇)
- Android实现记事本功能