[pyar] Serializando una lista de objetos con pickle problema en la impresión del archivo serializado

Ezequiel Trapani etrapani04 en gmail.com
Mie Mar 9 21:34:57 ART 2016


A mi criterio efectivamente te deserializa y te genera objetos de tipo
libro, lo que te falta es el metodo string de libro para q te muestre el
contenido y no la dirección de memoria.
Cuando vos declaras un objeto de cualquier tipo en cualquier lenguaje se le
asigna en tiempo de ejecución un espacio de memoria, si vos haces print de
la clase temuestra la dirección,  lo que se hace se declara el metodo
__str__(python) tostring (java) etc donde podes le definis como queres q te
represente la clase en un string,  de esta forma podes mostrar el contenido
de la clase libro en este caso.

Saludos
El mar 9, 2016 7:01 p.m., "XLJ xlj" <xlj707 en gmail.com> escribió:

> # 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
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20160309/24fa1a92/attachment.html>


Más información sobre la lista de distribución pyar