python序列化和反序列化区别,Python序列化和反序列化

  python序列化和反序列化区别,Python序列化和反序列化

  

  什么是序列化,反序列化?

  序列化:将对象转换成字节序列的过程称为对象序列化。

  反序列化:将字节序列还原到对象的过程称为对象的反序列化。

  自我理解:

  代码运行的时候,我们看到很多对象,可以是一个,也可以是一级对象的集合,还有很多对象数据。在这些数据中,有些信息我们想长期保留,所以需要这样做:

  写数据* *序列化* * 3354就是把内存中的这些对象变成一系列字节描述的过程。通常将项目中的数据写入文件并保存在本地。

  同样,如果你想读出保存的文件,在我们的项目中显示为数据或者自己使用。

  然后你需要做:

  读取* *反序列化* * 3354是将文件中的一系列字节转换成对象并存储在内存中的过程。虚拟机是否允许反序列化,不仅取决于类路径和函数代码是否一致,还取决于两个类的序列化ID是否一致(例如java=1L中常见的private static final long serial version uid)。

  在清单1中,尽管两个类的功能代码是相同的,但是如果序列化ID值不同,它们就不能相互序列化和反序列化。

  简单来说,Java的序列化机制通过在运行时判断一个类的serialVersionUID来验证版本一致性。

  什么情况下需要序列化?

  当您想要将内存中对象的状态保存到文件或数据库中时;

  当你想用套接字在网络上传输对象时;

  当你想通过RMI传输对象时;

  (最常用的一个可能存储在数据库中)

  实现序列化

  钟1.java

  java中序列化和反序列化的实现:Java可序列化序列化接口。

  public class xxximplementsselizable {

  privatestaticfinallonserialversionuid=1L

  } 2.在Python中

  在Python中,Pickle模块用于实现数据序列化和反序列化。

  (1)只能在python中使用,并且只支持python的基本数据类型。

  (2)它可以处理复杂的序列化语法。(比如自定义类的方法,游戏的存档等。)

  (3)序列化时,只序列化整个序列对象,不序列化内存地址。

  需要介绍:

  进口泡菜一、dump()方法

  Pickle.dump (obj,file,[,protocol])写入文件并将其序列化:

  进口泡菜

  test=rtest.txt

  #反序列化代码中要定义相同的函数名,函数体不限。

  defsayhi(姓名):

  打印(“你好”,姓名)

  信息={

  :,

  年龄:32,

  func:sayhi

  }

  print(pickle.dumps(info))

  带有open(测试,“WB”)ASF :

  #f.write(pickle.dumps(info))

  Pickle.dump(info,f)#的语义和上面的f.write(pickle.dumps(info info))完全一样。注意:序列化对象并将对象obj保存到文件file。参数protocol为序列化模式,默认值为0(ASCII协议,表示以文本形式序列化)。Protocol的值也可以是1和2(1和2表示二进制形式的序列化)。其中,1是老式的二进制协议;2是新的二进制协议)。该文件引用保存到的类文件对象。该文件必须有write()接口。该文件可以是用“w”或StringIO对象打开的文件,也可以是任何可以实现write()接口的对象。

  二、load()方法

  Pickle.load(file)从文件中读取并反序列化它:

  进口泡菜

  test=rtest.txt

  #需要在序列化代码中定义相同的函数名,函数体不限。

  defsayhi(姓名):

  打印(“你好”,姓名)

  打印(“hello2”,姓名)

  打开(测试,“Rb”)ASF :

  #data=pickle.loads(f.read())

  Data=pickle.loads (f) #的语义和上面的data=pickle.loads(f.read())完全一样。

  打印(“数据”,数据)

  Print(data[func](Alex ))注意:反序列化对象并将文件中的数据解析为python对象。文件中有read()接口和readline()接口。

  一般来说,在python中,两种方法是一起使用的。

  热门IT软件开发工作室,大量免费python视频教程,欢迎在线学习!

  本文转自:https://blog.csdn.net/ITBigGod/article/details/86477083

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

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