Directorio de artículos
Este
pickle
módulo implementa el protocolo binario para serializar y deserializar estructuras de objetos de Python.
-
Serialización: El proceso de convertir un objeto en una secuencia de bytes se denomina serialización de un objeto. La información del objeto se puede almacenar permanentemente
-
Deserialización: el proceso de restauración de una secuencia de bytes en un objeto se denomina deserialización de objetos. Crear el último objeto guardado del programa
Publicación por entregas:
pickle.dump(obj, file,protocol)
Nota: Guarde el objeto obj en el archivo de archivo.
- El archivo debe tener la interfaz write(), el archivo puede ser un archivo abierto con 'w' o un objeto StringIO o cualquier otro objeto que implemente la interfaz write().
- protocol es la versión del protocolo utilizada para la serialización,
- 0: protocolo ASCII, el objeto serializado se representa mediante un código ASCII imprimible;
- 1: protocolo binario antiguo;
- 2: El nuevo protocolo binario introducido en la versión 2.3 es más eficiente que el anterior.
- El valor predeterminado del protocolo es 0.
import pickle
#使用pickle模块将数据对象保存到文件
data1 = {
'a': [1, 2.0, 3, 4+6j],
'b': ('string', u'Unicode string'),
'c': None}
selfref_list = [1, 2, 3]
selfref_list.append(selfref_list[:])
output = open('data.txt', 'wb')
# pickle字典使用协议0。
pickle.dump(data1, output)
# 使用可用的最高协议Pickle列表。
pickle.dump(selfref_list, output, -1)
output.close()
Deserializar:
pickle.load(file)
#使用pickle模块从文件中重构python对象
pkl_file = open('data.txt', 'rb')
data1 = pickle.load(pkl_file)
print(data1)
data2 = pickle.load(pkl_file)
print(data2)
pkl_file.close()
{'a': [1, 2.0, 3, (4+6j)], 'b': ('string', 'Unicode string'), 'c': None}
[1, 2, 3, [1, 2, 3]]
¿Cuándo se requiere serialización?
- Cuando desee guardar el estado del objeto en memoria en un archivo o base de datos;
- Cuando desee utilizar sockets para transferir objetos a través de la red;
- Cuando desee transferir objetos a través de RMI;
- (El más utilizado puede estar almacenado en la base de datos)