python -序列化

时间:2023-03-09 03:43:36
python -序列化

python中用于序列化的两个模块

  • json 用于【字符串】和【python基本数据类型】之间进行转换
  • pickle 用于【python特有的类型】 和 【python基本数据类型】间进行转换

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

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

json更加适合跨语言,字符串,基本数据类型
pickle ,python 复杂类型的序列化,仅适用于python

一、json 模块

json提供了四个功能:dumps 、dump、loads 、load

1.将python基本数据类型转换成字符串类型

import json
dic = {'k1':'v1'} #将python基本数据类型转换成字符串形式
result = json.dumps(dic)
print(result,type(result))
输出结果:
{"k1": "v1"} <class 'str'>

2.将python字符串形式转换成基本数据类型

s1 = '{"k1":123}'
#将python字符串形式转换成基本数据类型
dic = json.loads(s1)
print(dic,type(dic))
输出结果:
{'k1': 123} <class 'dict'>

3.将数据通过特殊的形式转换为所有程序语言都认识的字符串,并写入文件

import json
li = [11,22,33]
json.dump(li,open('db1','w'))
把列表li 转换为字符串并写入到文件
结果:就是把[11, 22, 33] 写入到db1文件中

4.将文件中的字符串转换为python的基本数据类型

import json
li2 = json.load(open('db1','r'))
print(li,type(li))
输出结果:
[11, 22, 33] <class 'list'>

5.序列化的使用:

import requests
import json
response = requests.get('http://wthrcdn.etouch.cn/weather_mini?city=北京')
response.encoding = 'utf-8' dic = json.loads(response.text)
print(type(dic))
print(dic)

二、pickle模块

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

1.pickle.dumps 将python基本数据类型转换成字符串类型

import pickle
li = [11,22,33]
r = pickle.dumps(li)
print(r)
结果:
b'\x80\x03]q\x00(K\x0bK\x16K!e.'

2.pickle.loads 将python字符串形式转换成基本数据类型

import pickle
li = [11,22,33]
r = pickle.dumps(li)
#print(r)
result = pickle.loads(r)
print(result)
结果:
[11, 22, 33]

3.pickle.dump 将数据通过特殊的形式转换为所有程序语言都认识的字符串,并写入文件

import pickle
li = [11,22,33]
pickle.dump(li,open('db2','wb'))

4.pickle.load 将文件中的字符串转换为python的基本数据类型

import pickle
li = [11,22,33]
pickle.dump(li,open('db2','wb'))
result = pickle.load(open('db2','rb'))
print(result)
结果:
[11, 22, 33]