Foros del Web » Programando para Internet » Python »

error en modulo pikcle con lista

Estas en el tema de error en modulo pikcle con lista en el foro de Python en Foros del Web. ¡Buenas tardes a todos! Acabo de empezar a utilizar el módulo random y esta es la primera vez que uso el modulo pickle y la ...
  #1 (permalink)  
Antiguo 06/02/2012, 10:58
 
Fecha de Ingreso: octubre-2011
Mensajes: 8
Antigüedad: 12 años, 6 meses
Puntos: 0
Pregunta error en modulo pikcle con lista

¡Buenas tardes a todos!

Acabo de empezar a utilizar el módulo random y esta es la primera vez que uso el modulo pickle y la verdad es que no lo comprendo del todo bien.

La cosa es que tengo que hacer este programa tan sencillo:

"Escribir un programa que genere una lista de 1000 números reales aleatorios comprendidos entre -100 y 100 y la guarde en un fichero mediante el módulo pickle."

He leido sobre el funcionamiento del módulo pickle y he hecho este programilla:

Código Python:
Ver original
  1. import random
  2. import pickle
  3. f=open("Lista de 1000 numeros.txt","w")
  4. lista=[]
  5. for i in range (1000):
  6.     lista.append(str(random.uniform(-100,100)))
  7. pickle.dump(lista,f)
  8. f.close()

Pero me da este error:

Traceback (most recent call last):
File "C:/Users/xxx/Desktop/pruebas.py", line 7, in <module>
pickle.dump(lista,f)
TypeError: must be str, not bytes


no entiendo porque me da ese error si el objeto que intento picklear es una lista compuesta de números reales. Se supone que tanto las listas como los números enteros largos y de coma flotante se pueden picklear.

¿Alguna idea sobre el error?

¿O es problema de la extensión del archivo que intento abrir?¿No tiene que ser .txt?

]Un saludo y gracias!
  #2 (permalink)  
Antiguo 06/02/2012, 11:49
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: error en modulo pikcle con lista

Ok estoy seguro que estas usando python 3.x

Basado en eso y en esta página, tienes que abrir el archivo de forma binaria.

Código Python:
Ver original
  1. import random
  2. import pickle
  3. f=open("Lista de 1000 numeros.txt","wb")
  4. lista=[]
  5. for i in range (1000):
  6.     lista.append(str(random.uniform(-100,100)))
  7. pickle.dump(lista,f)
  8. f.close()
  #3 (permalink)  
Antiguo 06/02/2012, 12:34
 
Fecha de Ingreso: octubre-2011
Mensajes: 8
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: error en modulo pikcle con lista

¡Muuuchas gracias! Eso era todo lo que fallaba. Menudo detalle más pequeño y la importancia que tiene. No tenía ni idea de que un archivo se pudiese abrir en forma binaria.

Ya he podido hacer el resto de ejercicios relacionados.

Un saludo y gracias de nuevo.

Etiquetas: ejercicio, fichero, listas, modulo, numeros, pikcle
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:01.