Python数据的持久性 对象序列化

Python数据的持久性 对象序列化

Python内置的open()函数所返回的文件对象有一个重要的缺陷。当用’w’模式打开时,write()方法只接受字符串对象。

这意味着,如果你有以任何非字符串形式表示的数据,无论是内置类(数字、字典、列表或图元)还是其他用户定义的类的对象,都不能直接写入文件。在写入之前,你需要将其转换为字符串形式。

numbers=[10,20,30,40]
   file=open('numbers.txt','w')
   file.write(str(numbers))
   file.close()

对于二进制文件, write() 方法的参数必须是一个字节对象。例如,整数列表通过 tearray() 函数转换为字节,然后写入文件。

numbers=[10,20,30,40]
   data=bytearray(numbers)
   file.write(data)
   file.close()

为了以相应的数据类型从文件中读回数据,需要进行反向转换。

file=open('numbers.txt','rb')
   data=file.read()
   print (list(data))

这种将对象转换成字符串或字节格式(反之亦然)的手动转换是非常麻烦和乏味的。可以将Python对象的状态以字节流的形式直接存储到文件或内存流中,然后再检索到其原始状态。这个过程被称为序列化和反序列化。

Python的内置库包含了用于序列化和反序列化过程的各种模块。

编号:Sr.No. 名称和描述
1 pickle Python特定的序列化库
2 marshal 内部用于序列化的库
3 shelve Pythonic对象持久化
4 dbm 库,提供到Unix数据库的接口
5 csv 库,用于将Python数据存储和检索为CSV格式
6 json 库,用于将数据序列化为通用的JSON格式

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程