python中常用的序列化模块,python中序列化和反序列化

  python中常用的序列化模块,python中序列化和反序列化

  在日常开发中,数据序列化和反序列化是常见的数据操作。Python为开发者提供了两个实现数据序列化的模块,分别是json模块和pickle模块。本文将详细讲解这两个模块的使用方法,有需要的可以参考。

  

目录
Json模块转储()函数转储()函数加载()函数pickle模块转储()函数转储()函数加载()函数加载()函数摘要在日常开发中,数据序列化和反序列化是常见的数据操作。Python提供了两个模块方便开发者实现数据序列化,分别是json模块和Pickle模块。这两个模块的主要区别如下:

  Json是文本序列化格式,pickle是二进制序列化格式;Json可以直观阅读,pickle不行;Json具有互操作性,广泛应用于Python系统之外,而pickle是Python特有的;默认情况下,json只能表示Python内置类型的子集,而不是自定义类;但是pickle可以表示大量的Python数据类型。

  

Json 模块

  Json是一种轻量级的数据交换格式。由于其需要传输的数据量小,易于解析,被广泛应用于各种系统之间的交互操作中,作为一种数据格式来传输数据。它包含几个常用的函数,如下所示:

  

dumps()函数

  dumps()函数可以将Python对象编码成Json字符串。例如:

  #字典转换成json字符串且guarantee _ ASCII=false后,可以识别中文。indent=4以4个空格的间隔显示。

  导入json

  D={ 小明 3360 { 性别 : 男,地址 : 上海,年龄 :24},},小红 3360 { 性别 3360 女,地址 3366

  print(json.dumps(d,确保_ascii=False,indent=4))

  #执行结果:

  {

  小明 3360 {

  性别 : 男性:

  地址 : 上海:

  年龄: 26

  },

  小红3360 {

  性别 : 女性:

  地址 : 上海:

  年龄: 24

  }

  }

  

dump()函数

  dump()函数可以将Python对象编码成json字符串,可以自动写入文件,不需要单独写文件。例如:

  #字典转换成json字符串,不需要写文件。自动转换的json字符串被写入“users.json”文件

  导入json

  D={ 小明 3360 { 性别 : 男,地址 : 上海,年龄 :24},},小红 3360 { 性别 3360 女,地址 3366

  #打开名为“users.json”的空文件

  fw=open(users.json , w ,编码=utf-8 )

  json.dump(d,fw,确保_ascii=False,indent=4)

  

loads()函数

  loads()函数可以将json字符串转换为Python数据类型。例如:

  #这是users.json文件中的内容

  {

  小明 3360 {

  性别 : 男性:

  地址 : 上海:

  年龄 :26

  },

   "小红":{

   "sex":"女",

   "addr":"上海",

   "age":24

   }

  }

  #!/usr/bin/python3

  #把json串变成python的数据类型

  import json

  #打开‘users.json的json文件

  f =open(users.json,r,encoding=utf-8)

  #读文件

  res=f.read()

  print(json.loads(res))

  #执行结果:

  {小明: {sex: 男, addr: 上海, age: 26}, 小红: {sex: 女, addr: 上海, age: 24}}

  

  

  

load()函数

  load()跟loads()功能相似,load()函数可以将 json 字符串转换成 Python 数据类型,不同的是前者的参数是一个文件对象,不需要再单独读此文件。例如:

  

#把json串变成python的数据类型:字典,传一个文件对象,不需要再单独读文件 

  import json

  #打开文件

  f =open(users.json,r,encoding=utf-8)

  print(json.load(f))

  #执行结果:

  {小明: {sex: 男, addr: 上海, age: 26}, 小红: {sex: 女, addr: 上海, age: 24}}

  

  

Pickle 模块

  Pickle 模块与 Json 模块功能相似,也包含四个函数,即 dump()、dumps()、loads() 和 load(),它们的主要区别如下:

  dumps 和 dump 的区别在于前者是将对象序列化,而后者是将对象序列化并保存到文件中。

  loads 和 load 的区别在于前者是将序列化的字符串反序列化,而后者是将序列化的字符串从文件读取并反序列化。

  

dumps()函数

  dumps()函数可以将数据通过特殊的形式转换为只有python语言认识的字符串,例如:

  

import pickle

  # dumps功能

  import pickle

  data = [A, B, C,D]

  print(pickle.dumps(data))

  b\x80\x03]q\x00(X\x01\x00\x00\x00Aq\x01X\x01\x00\x00\x00Bq\x02X\x01\x00\x00\x00Cq\x03X\x01\x00\x00\x00Dq\x04e.

  

dump()函数

  dump()函数可以将数据通过特殊的形式转换为只有python语言认识的字符串,并写入文件。例如:

  

# dump功能

  with open(test.txt, wb) as f:

   pickle.dump(data, f)

  print(写入成功)

  写入成功

  

loads()函数

  loads()函数可以将pickle数据转换为python的数据结构。例如:

  

# loads功能

  msg = pickle.loads(datastr)

  print(msg)

  [A, B, C, D]

  

load()函数

  load()函数可以从数据文件中读取数据,并转换为python的数据结构。例如:

  

# load功能

  with open(test.txt, rb) as f:

   data = pickle.load(f)

  print(data)

  [A, B, C, D]

  

  

总结

  本节给大家介绍 Python 中 json&pickle 模块的常用操作,对于实现数据的序列化和反序列化提供了支撑。

  到此这篇关于Python实现数据的序列化操作详解的文章就介绍到这了,更多相关Python数据序列化内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: