Python -- 序列化模块

6.2.1序列化模块

-- 将一种数据结构转化成特殊的序列(特殊的字符串,bytes)并且还可以反转回去

json模块 : (重点

  1. 不同语言都遵循的一种数据转化格式,即不同语言都使用的特殊字符串。(比如Python的一个列表[1, 2, 3]利用json转化成特殊的字符串,然后在编码成bytes发送给php的开发者,php的开发者就可以解码成特殊的字符串,然后在反解成原数组(列表): [1, 2, 3])
  2. json序列化只支持部分Python数据结构:dict,list, tuple,str,int, float,True,False,None

pickle模块:

  1. 只能是Python语言遵循的一种数据转化格式,只能在python语言中使用。
  2. 支持Python所有的数据类型包括实例化对象。
  • json模块

    主要用于网络传输,可以用于文件读写:dumps loads ( 多个数据单个数据都行 )

    只能用于文件读写:dump load ( 单个数据 )

import json
dic = {'k1':'v1','k2':'v2','k3':'v3'}
str_dic = json.dumps(dic)  #序列化:将一个字典转换成一个字符串
print(type(str_dic),str_dic)  #<class 'str'> {"k3": "v3", "k1": "v1", "k2": "v2"}
#注意,json转换完的字符串类型的字典中的字符串是由""表示的

dic2 = json.loads(str_dic)  #反序列化:将一个字符串格式的字典转换成一个字典
#注意,要用json的loads功能处理的字符串类型的字典中的字符串必须由""表示
print(type(dic2),dic2)  #<class 'dict'> {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}

# 写入文件中,再读取出来
import json
dic = {'username': '老李', 'password': 123,'status': False}
str_dic = json.dumps(dic)
with open('json练习.json',mode='w',encoding='UTF-8') as f:
    f.write(str_dic)

with open('json练习.json',mode='r',encoding='UTF-8') as f1:
    content = f1.read()
    print(json.loads(content))
    
# 单个数据的存取文件 
import json
dic = {'username': '太白', 'password': 123,'status': False}
with open('jsonlx1.json',encoding='utf-8',mode='w') as f1:
    json.dump(dic,f1)

with open('jsonlx1.json',encoding='utf-8') as f1:
    dic1 = json.load(f1)
print(dic1,type(dic1))
# 多个数据存储到一个文件中
import json
dic1 = {'username': '太白', 'password': 123,'status': False}
dic2 = {'username': 'alex', 'password': 123,'status': False}
dic3 = {'username': 'ly', 'password': 123,'status': False}
with open('jsonmore',mode='a',encoding='utf-8') as f:
    f.write(json.dumps(dic1)+'
')
    f.write(json.dumps(dic2)+'
')
    f.write(json.dumps(dic3)+'
')

with open('jsonmore',mode='r',encoding='utf-8') as f2:
    for line in f2:
        ret = json.loads(line)
        print(ret)
  • pickle模块
import pickle
#dumps,loads  只能是网络传输
l1 = ['wusir', '大白', '小黑', 666]
ret = pickle.dumps(l1)
print(ret)

l2 = pickle.loads(ret)
print(l2,type(l2))

# dump load 数据结构存取文件.
import pickle
l1 = ['wusir', '大白', '小黑', 666]
with open('pickle练习.pickle',mode='wb') as f1:
    pickle.dump(l1,f1)

with open('pickle练习.pickle', mode='rb') as f1:
    ret = pickle.load(f1)
    print(ret,type(ret))
    
    
# 多个数据写入文件
import pickle
l1 = ['wusir', '大白', '小黑1', 666]
l2 = ['wusir', '大白', '小黑2', 666]
l3 = ['wusir', '大白', '小黑3', 666]
with open('pickle练习1.pickle',mode='wb') as f1:
    pickle.dump(l1,f1)
    pickle.dump(l2,f1)
    pickle.dump(l3,f1)

with open('pickle练习1.pickle', mode='rb') as f1:
    ret1 = pickle.load(f1)
    ret2 = pickle.load(f1)
    ret3 = pickle.load(f1)
    print(ret1,ret2,ret3)
原文地址:https://www.cnblogs.com/Agoni-7/p/11105009.html