[pyar] Serializando una lista de objetos con pickle problema en la impresión del archivo serializado
XLJ xlj
xlj707 en gmail.com
Mie Mar 9 19:01:29 ART 2016
# en este modulo tendre la estanteria de libros (listas)
from clases.libro import Libro
import pickle
# titulo, anio, autor, paginas, editorial, codigoLibro
# llenado de la estanteria
lib1 = Libro("Alicia en el pais de las maravillas", 1999, "lucson marz", 200, "MCgraw Hill", "AHSBCr31")
lib2 = Libro("Peter Pan", 1985, "J. M. Barrie", 206, "A Millennium Fulcrum Edition", "HALSDF232")
lib3 = Libro("Oliver tweest", 1855, "Charles Dikenson", 120, "Porrua", "ASDFAS235")
lib4 = Libro("La Odisea", 1530, "Homero", 950, "Porrua", "ASDFASDF323")
lib5 = Libro("La iliada ", 1532, "Homero", 1300, "Porrua", "ADSFASD9032")
lib6 = Libro("La hojarasca", 1960, "Gabriel Garcia Marquez", 180, "Editorial Latina", "ADF3235ASD")
libros = [lib1, lib2, lib3, lib4, lib5, lib6] # 6 libros
# vaciado de la lista
def listarLibros():
for object in libros:
print(object, "\n", object.getCodigoLibro() )
menu()
def eliminarTitulo():
print("eliminar titulo")
menu()
def agregarTitulo():
#para agregar un titulo primero creamos una nueva instancia de Libro
#para esto pedimos cada uno de los atributos requeridos
titulo = input("cual es el titulo: ")
anio = input("ingresa el anio: ")
autor = input("ingresa el autor: ")
paginas = input("cuantas pagias tiene el libro? ")
editorial = input("de que editorial es? ")
claveLibro = input("ingresa un codigo alfanumerico para el libro: ")
lib7 = Libro(titulo, anio, autor, paginas, editorial, claveLibro)
libros.append(lib7)
#ahora convertimos el objeto python en JSON
print("libro agregado con exito!! ")
menu()
def guardarCambiosEnArchivoPickle():
print("realizando serializacion pickle.......")
with open('libros.pickle','wb') as f:
pickle.dump(libros, f,protocolo=0,import=True*)
print("cambios guardados con exito !")
menu()
def leerArchivoPickle():
with open('libros.pickle','rb') as f:
libros = pickle.load(f,import=True*,encoding="ASCII"*,error="strict"*)
print(libros)
print("\n")
menu()
def salir():
print("salir.....")
def menu():
opcion = input("Operaciones: \n\t 1) listar material \n\t 2) eliminar Titulo \n\t 3) agregar titulo \n\t 4) guardar Cambios En Archivo Pickle \n\t 5) leer archivo pickle \n\t 6) salir ")#todos los metodos manipularan archivos
#emulamos switch
operaciones = {'1':listarLibros, '2':eliminarTitulo, '3':agregarTitulo, '4':guardarCambiosEnArchivoPickle, '5':leerArchivoPickle, '6':salir}
operaciones[opcion]()
menu()
EL PROBLEMA ES QUE DESPUES DE SERIALIZAR EL CONTENIDO QUE LEEO CON LA FUNCION leerArchivoPickle() es el siguiente:
[<clases.libro.Libro object at 0x10118a320>, <clases.libro.Libro object at 0x10118a358>, <clases.libro.Libro object at 0x10118a1d0>, <clases.libro.Libro object at 0x10118a240>, <clases.libro.Libro object at 0x10118a2b0>, <clases.libro.Libro object at 0x101194c88>]
ES DECIR NO APARECE EN UN FORMATO LEGIBLE PARA EL SER HUMANO CADA UNO DE LOS OBJETOS
ALGUIEN ME PUEDE DECIR A QUE SE DEBE ESTO Y COMO LO PUEDO CORREGIR? DE ANTEMANO GRACIAS POR SU APOYO Y COMPRESION
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20160309/dc01c025/attachment-0001.html>
Más información sobre la lista de distribución pyar