这是用于序列化的两个模块:

  • json: 用于字符串和python数据类型间进行转换
  • pickle: 用于python特有的类型和python的数据类型间进行转换

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

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

import pickle
data = {'k1':123, 'k2':123}
#dumps可以将数据类型转换成只有python才认识的字符串
p_str = pickle.dumps(data)
print(p_str)

执行结果如下:

b'\x80\x03}q\x00(X\x02\x00\x00\x00k1q\x01K{X\x02\x00\x00\x00k2q\x02K{u.'

将数据转换成只有Python认识的字符串,并写入文件:

import pickle
data = {'k1':123, 'k2':123}
#打开文件,然后将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)

执行一下,看看是否正确的读取出来:

{'k1': 123, 'k2': 123}

good,  已经正确的读取出来的。

json的用法和pickle是一样的

import json
data = {'k1':123, 'k2':123}
p_str = json.dumps(data)
print(p_str, type(p_str))

执行一下看看结果:

{"k1": 123, "k2": 123} <class '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))

上面这段代码,是写入文件又读取出来。看看执行结果

{'k2': 123, 'k1': 123} <class 'dict'>

正确读取出来,而且类型也是正确的。

那pickle和json有什么区别呢?

在上面两段代码中,pickle写入和读取文件时,用的是 ‘b’模式,而json没有。

json是可以在不同语言之间交换数据的,而pickle只在python之间使用。

json只能序列化最基本的数据类型,而pickle可以序列化所有的数据类型,包括类,函数都可以序列化。

python(6)- json和pickle模块的更多相关文章

  1. python基础-json、pickle模块

    json.pickle区别 总结: """ json: 1.不是所有的数据类型否可以序列化,序列化返回结果为字符串 2.不能多次对同一文件序列化 3.json数据可以跨语 ...

  2. python之json、pickle模块

    一.json模块 之前我们学习过用eval内置方法可以将一个字符串转成python对象,不过,eval方法是有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候, ...

  3. python 之 json 与pickle 模块

    序例化:将对象转换为可通过网络传输或可以存储到本地磁盘的数据格式(如:XML.JSON或特定格式的字节串)的过程称为序列化:反之,则称为反序列化. 1.[JSON] import json dic={ ...

  4. python值json与pickle模块

    #json 是用来序列化对象的 # 只有2个方法,序列化与反序列化 # 但是不能序列化类 与 函数 import json dict={"key1":[1,2,3,4,5]} f ...

  5. python模块(json和pickle模块)

    json和pickle模块,两个都是用于序列化的模块 • json模块,用于字符串与python数据类型之间的转换 • pickle模块,用于python特有类型与python数据类型之间的转换 两个 ...

  6. Python json和pickle模块

    用于序列化的两个模块 json,用于字符串 和 python数据类型间进行转换 pickle,用于python特有的类型 和 python的数据类型间进行转换 Json模块提供了四个功能:dumps. ...

  7. Python之时间模块、random模块、json与pickle模块

    一.时间模块 1.常用时间模块 import time # 时间分为三种格式 #1.时间戳---------------------以秒计算 # start= time.time() # time.s ...

  8. python常用模块之json、pickle模块

    python常用模块之json.pickle模块 什么是序列化? 序列化就是把内存里的数据类型转换成字符,以便其能存储到硬盘或者通过网络进行传输,因为硬盘或网络传输时只接受bytes. 为什么要序列化 ...

  9. Python的json and pickle序列化

    json序列化和json反序列化 #!/usr/bin/env python3 # -*- coding: utf-8 -*- __author__ = '人生入戏' import json a = ...

随机推荐

  1. Red5下的room

    http://blog.csdn.net/whycold/article/details/6142475 package com.test; import java.util.ArrayList;im ...

  2. HDU 1213 How Many Tables (并查集)

    How Many Tables 题目链接: http://acm.hust.edu.cn/vjudge/contest/123393#problem/C Description Today is Ig ...

  3. Umbraco中的Member登录时的Lock out功能

    请参看文章 https://our.umbraco.org/forum/using-umbraco-and-getting-started/76389-preventing-member-lock-o ...

  4. MongoDB学习笔记(一) MongoDB介绍及安装

    转自:http://database.51cto.com/art/201103/247882.htm http://baike.baidu.com/link?url=b6B3dVSCnQauCX-Ep ...

  5. Row_Number()over(order by....) as

    出自:http://www.2cto.com/database/201307/227103.html Sql Server Row_Number()学习   Row_Number():   row_n ...

  6. hibernateTemplate HibernateDaoSupport不建议在Spring与Hibernate整合中使用

    HibernateTemplate类属于spring框架中的类 :org.springframework.orm.hibernate3.HibernateTemplate HibernateTempl ...

  7. Codeforces Round #331 (Div. 2)C. Wilbur and Points 贪心

    C. Wilbur and Points Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/596/ ...

  8. hdu 5565 Clarke and baton 二分

    Clarke and baton Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php? ...

  9. Codeforces Round #328 (Div. 2) A. PawnChess 暴力

    A. PawnChess Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/592/problem/ ...

  10. Codeforces GYM 100114 D. Selection 线段树维护DP

    D. Selection Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100114 Descriptio ...