Python json and pickle

Python json and pickle

一、json

  • 定义:把一个内存对象转成字符串的形式【存入到硬盘】叫做序列化
  • 作用:用于字符串 和 python数据类型间进行转换,序列化和反序列化
  • 好处:
    • 所有的语言都支持json格式
  • 语法:
  • json 模块提供四个功能分别是:dumps、dump、loads、load.  详解如下:

    1.json.dumps -序列化.    针对的是内存对象. 

    2.json.dump  -序列化.    针对的是文件句柄. -->第一个参数是序列化对象.第二个参数是打开文件的句柄

    3.json.loads -反序列化.  针对的是内存对象.

    4.json.load  -反序列化   针对的是文件句柄. -->传入文件句柄.

  • 将字典中的数据存入硬盘中?  
date = {
    "name":"Harry",
    "age":27,
    "sex":"M"} 
  • 解决办法一 
#  将date字典数据写入文件方法
f = open("Date.txt","w",encoding="utf-8")
f.write(str(date))
f.close()

#  从文件中读取类容. 注意此处取文件中数据时. 需要转换成字典.
f = open("Date.txt","r",encoding="utf-8")
Date = eval(f.read())
print(Date)
print(Date["age"])
f.close() 
  • 解决办法二(JSON 序列化两种方法)
import json
f = open("Date.txt","w",encoding="utf-8")

# dumps 用法
# f.write(json.dumps(date))

# dump  用法
json.dump(date,f)

f.close()
  • JSON反序列化两种方法 
import json
f = open("Date.txt",encoding="utf-8")

# loads  用法
# date = json.loads(f.read())

# load   用法
date = json.load(f)

print(date)
print(date["age"]) 
  • 总结 
    • 文件只能接收字符串 或 二进制bytes类型数据.
    • 如果在序列化时用dumps, 那么在反序列化时必须用loads。 否则会报错,一一对应。

二、pickle 

  • 语法:  
    • pickle 模块提供四个功能分别是:dumps、dump、loads、load.  详解如下: 

        1.pickle.dumps -序列化. 针对的是内存对象. 

        2.pickle.dump  -序列化. 针对的是文件句柄. 第一个参数是序列化对象. 第二个参数是打开文件的句柄  

        3.pickle.loads -反序列化. 针对的内存对象.  

        4.pickle.load  -反序列化. 针对文件句柄. 传入文件句柄  

  • 先需要将字典中的数据存入硬盘中. 如何操作?
date = {
    "name":"Harry",
    "age":27,
    "sex":"M"}
  • 解决办法一(pickle 序列化两种方法)
import pickle
f = open("date.pki","wb")

# dumps 用法
# f.write(pickle.dumps(date))

# dump 用法
pickle.dump(date,f)
  • pickle 反序列化两种方法
import pickle
f = open("date.pki","rb")

# loads 用法
# date = pickle.loads(f.read())

# load 用法
date = pickle.load(f)
print(date)
print(date["sex"])  
  • json  and  pickle 区别总结:
    • json :不能序列化函数等复杂数据类型,只能序列化和反序列化普通数据类型。 任何语言都支持json
    • pickle:支持python中所有的数据类型,也就是说python中所有的数据类型都可被pickle。 原因:pickle是python自己本身的
posted @ 2018-12-10 22:48  HonGIm  阅读(130)  评论(0)    收藏  举报