pickle.dump() y pickle.load() para operaciones con archivos

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)

Supongo que te gusta

Origin blog.csdn.net/qq_43940950/article/details/123683466
Recomendado
Clasificación