简单谈谈Python中的json与pickle

 更新时间:2017年07月19日 09:21:21   投稿:jingxian  
下面小编就为大家带来一篇简单谈谈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就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • keras获得某一层或者某层权重的输出实例

    keras获得某一层或者某层权重的输出实例

    今天小编就为大家分享一篇keras获得某一层或者某层权重的输出实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • Python实现的桶排序算法示例

    Python实现的桶排序算法示例

    这篇文章主要介绍了Python实现的桶排序算法,简单说明了桶排序的概念、原理及优缺点,并结合实例形式演示了Python实现桶排序的方法,需要的朋友可以参考下
    2017-11-11
  • python+pytest接口自动化参数关联

    python+pytest接口自动化参数关联

    这篇文章主要介绍了python+pytest接口自动化参数关联,参数关联,也叫接口关联,即接口之间存在参数的联系或依赖,更多相关内容需要的小伙伴可可以参考一下
    2022-06-06
  • Python中的__init__作用是什么

    Python中的__init__作用是什么

    在本篇文章里小编给大家分享的是关于Python中的__init__作用以及相关用法内容,需要的朋友们可以学习下。
    2020-06-06
  • pygame开发:马赛逻辑小游戏的代码实现

    pygame开发:马赛逻辑小游戏的代码实现

    这篇文章主要介绍了pygame开发,通过本文,您可以使用pygame开发一个马赛逻辑小游戏~有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-09-09
  • 通过实例解析python描述符原理作用

    通过实例解析python描述符原理作用

    这篇文章主要介绍了通过实例解析python描述符原理作用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • python演示解答正则为什么是最强文本处理工具

    python演示解答正则为什么是最强文本处理工具

    正则表达式又称规则表达式,通常被用来检索、替换那些符合某个模式(规则)的文本,它是最强的文本处理工具,至于原因本文将给你答案
    2021-09-09
  • python利用smtplib实现QQ邮箱发送邮件

    python利用smtplib实现QQ邮箱发送邮件

    这篇文章主要为大家详细介绍了python利用smtplib实现QQ邮箱发送邮件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • 对Python 网络设备巡检脚本的实例讲解

    对Python 网络设备巡检脚本的实例讲解

    下面小编就为大家分享一篇对Python 网络设备巡检脚本的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • python实现的多任务版udp聊天器功能案例

    python实现的多任务版udp聊天器功能案例

    这篇文章主要介绍了python实现的多任务版udp聊天器功能,结合具体案例形式分析了Python基于udp的聊天器功能相关实现与使用技巧,需要的朋友可以参考下
    2019-11-11

最新评论