Python Data Persistence 简明教程

Python Data Persistence - Object Serialization

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

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

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

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

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.

Name & Description

1

pickle Python specific serialization library

2

marshal 用于序列化的内部库

3

shelve Pythonic object persistence

4

dbm 提供与 Unix 数据库接口的库

5

csv 用于存储和检索 Python 数据到 CSV 格式的库

6

json 序列化为通用 JSON 格式的库