码迷,mamicode.com
首页 > Web开发 > 详细

20180209-json&pickle模块

时间:2018-02-09 17:21:15      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:字符串   结合   类型   class   port   用法   import   type   json序列化   

什么是序列化?

  序列化就是把内存里的数据类型转成字符串,以使其能够存储到硬盘中或在网络中传输到远程,因为硬盘和网络传输时只接收bytes

用于序列化的两个模块

  1. json,用于字符串和python数据类型间的转换

  2. pickle,用于python特有的数据类型和python数据类型间进行转换

json模块提供了4个功能:dumps、dump、loads、load   可以跨平台

pickle模块提供了4个功能:dumps、dump、loads、load  只能在python中使用

 

  json用法

import json

data = {
    role: Alex,
    life: 50
}

# json序列化
json_str = json.dumps(data)
print(json_str,type(json_str))
# 输出
# {"role": "Alex", "life": 50} <class ‘str‘>

# json反序列化
data = json.loads(json_str)
print(data,type(data))
# 输出
# {‘role‘: ‘Alex‘, ‘life‘: 50} <class ‘dict‘>

  配合文件操作的json用法

# 序列化配合文件操作
with open(./tmp/json.pk,w) as fp:
    json.dump(data,fp)

# 反序列化配合文件操作
with open(tmp/json.pk) as fp:
    data = json.load(fp)
print(data,type(data))
# 输出
# {‘life‘: 50, ‘role‘: ‘Alex‘} <class ‘dict‘>

  pickle用法 

import pickle

# pickle序列化
pickle_str = pickle.dumps(data)
print(pickle_str,type(pickle_str))
# 输出
# b‘\x80\x03}q\x00(X\x04\x00\x00\x00lifeq\x01K2X\x04\x00\x00\x00roleq\x02X\x04\x00\x00\x00Alexq\x03u.‘ <class ‘bytes‘>

# pickle反序列化
data = pickle.loads(pickle_str)
print(data,type(data))
# 输出
# {‘life‘: 50, ‘role‘: ‘Alex‘} <class ‘dict‘>

 

  结合文件操作

# 结合文件操作的pickle序列化
with open(tmp/pickle.pk,wb) as fp:
    pickle.dump(data,fp)

# 结合文件操作的pickle反序列化
with open(tmp/pickle.pk,rb) as fp:
    data = pickle.load(fp)
print(data,type(data))

  注意:pickle序列化后不是字符串,而是字节,所以在文件操作的时候,需要注意要使用 ‘wb‘ 和 ‘rb‘

 

20180209-json&pickle模块

标签:字符串   结合   类型   class   port   用法   import   type   json序列化   

原文地址:https://www.cnblogs.com/it-q/p/8435968.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!