Foros del Web » Programando para Internet » Python »

como hacer guardar al programa

Estas en el tema de como hacer guardar al programa en el foro de Python en Foros del Web. me sale error en pickle no se porque pero no guarda @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código python: Ver original import wx import os   class text ( ...
  #1 (permalink)  
Antiguo 09/01/2009, 18:54
 
Fecha de Ingreso: mayo-2008
Mensajes: 499
Antigüedad: 16 años
Puntos: 1
como hacer guardar al programa

me sale error en pickle no se porque pero no guarda

Código python:
Ver original
  1. import wx
  2. import os
  3.  
  4. class text(wx.Frame):
  5.     def __init__(self, parent, id, title):
  6.         wx.Frame.__init__(self, parent, id, title, size = (600, 550))
  7.  
  8. #barra de menu
  9.         menubar = wx.MenuBar()
  10. #menu: contenido
  11.         menu = wx.Menu() #archivo
  12.         nuev = wx.Menu()
  13.         nuev.Append(100, "&Nuevo\tCtrl+N", 'Nuevo archivo')
  14.         nuev.Append(200, "Nueva &Ventana\tCtrl+O", 'Nueva ventana para otro archivo')
  15.         menu.AppendMenu(-1, "Nuevo", nuev)
  16.         menu.Append(2, "&Abrir\tCtrl+A", "Abrir Archivo existente")
  17.         menu.Append(3, "&Guardar\tCtrl+G", "Guardar archivo")
  18.         menu.Append(4, "Guardar &Como\tCtrl+M", "guardar copia de archivo")
  19.         menu.AppendSeparator()
  20.         menu.Append(5, "&Salir\tCtrl+Q", "Salir del programa")
  21.         edit = wx.Menu()
  22.         edit.Append(10, "&Deshacer\tCtrl+Z", 'deshacer ultimo')
  23.         edit.Append(11, "&Rehacer\tCtrl+U", 'hacer denuevo')
  24.         edit.AppendSeparator()
  25.         edit.Append(12, "&Seleccionar Todo\tCtrl+E", 'seleccionar todo el texto')
  26.         edit.AppendSeparator()
  27.         edit.Append(13, "&Cortar\tCtrl+X", 'cortar texto seleccionado')
  28.         edit.Append(14, "&Pegar\tCtrl+V", 'pegar texto')
  29.         edit.Append(15, "Cop&iar\tCtrl+C", 'Copiar texto seleccionado')
  30.         help = wx.Menu()
  31.         help.Append(20, "&Acerca de...", 'Sobre este programa')
  32.         menubar.Append(menu, "&Archivo")
  33.         menubar.Append(edit, "&Edicion")
  34.         menubar.Append(help, "A&yuda")
  35.         self.SetMenuBar(menubar)
  36.        
  37. #texto enrikecido
  38.         self.text = wx.TextCtrl(self, -1, style = wx.TE_MULTILINE | wx.TE_RICH2)
  39.         self.text.SetInsertionPoint(0)
  40.         points = self.text.GetFont().GetPointSize()
  41.         f = wx.Font(points + 2, wx.MODERN, wx.NORMAL, wx.BOLD, False)
  42.         self.text.SetStyle(13, 12, wx.TextAttr("white", wx.NullColour, f))
  43.         self.text.SetBackgroundColour('Black')
  44.  
  45. #eventos
  46.         self.Bind(wx.EVT_MENU, self.OnSalir, id=5)
  47.         self.Bind(wx.EVT_MENU, self.OnVentan, id=200)
  48.         self.Bind(wx.EVT_MENU, self.OnOpen, id=2)
  49.         self.Bind(wx.EVT_MENU, self.OnSave, id=3)
  50.         self.Bind(wx.EVT_MENU, self.OnSaveAs, id=4)
  51.        
  52. #mostrar
  53.         self.filename = ""
  54.         self.CreateStatusBar()
  55.         self.Centre()
  56.         self.createToolBar()
  57.         self.Show(True)
  58.  
  59.     def SaveFile(self):
  60.         if self.filename:
  61.             data = self.text.GetValue()
  62.             f = open(self.filename, 'w')
  63.             Pickle.dump(data, f)
  64.             f.close()
  65.  
  66.     def ReadFile(self):
  67.         if self.filename:
  68.             try:
  69.                 f = open(self.filename, 'r')
  70.                 data = Pickle.load(f)
  71.                 f.close()
  72.                 self.textSetLinesData(data)
  73.             except Pickle.UnpicklerError:
  74.                 wx.MessageBox("%s no es un archivo compatible." % self.filename, "oops!", style=wx.OK|wx.ICON_EXCLAMATION)
  75.  
  76.     wildcard = "Archivos Hipertext (*.txt)|*.txt|Todos los archivos (*.*)| *.*"
  77.  
  78.     def OnOpen(self, event):
  79.         dlg = wx.FileDialog(self, "Abrir archivos de HiperTexto",  os.getcwd(), style=wx.OPEN, wildcard=self.wildcard)
  80.         if dlg.ShowModal() == wx.ID_OK:
  81.             self.filename = dlg.GetPath()
  82.             self.ReadFile()
  83.             self.SetTitle(self.title +' -- '+ self.filename)
  84.         dlg.Destroy()
  85.  
  86.     def OnSave(self, event):
  87.         if not self.filename:
  88.             self.OnSaveAs(event)
  89.         else:
  90.             self.SaveFile()
  91.  
  92.     def OnSaveAs(self, event):
  93.         dlg = wx.FileDialog(self, "Guardar archivo como...", os.getcwd(), style=wx.SAVE|wx.OVERWRITE_PROMPT, wildcard = self.wildcard)
  94.         if dlg.ShowModal() == wx.ID_OK:
  95.             filename = dlg.GetPath()
  96.             if not os.path.splitext(filename)[1]:
  97.                 filename = filename +'.txt'
  98.             self.filename = filename
  99.             self.SaveFile()
  100.             self.SetTitle(self.title +'--'+ self.filename)
  101.         dlg.Destroy()
  102.        
  103.     def OnSalir(self, event):
  104.         self.Close()
  105.  
  106.     def OnVentan(self, event):
  107.         editor = text(None, -1, 'Text Editor')
  108.         editor.Centre()
  109.         editor.Show()
  110.  
  111.     def createToolBar(self):
  112.         toolbar = self.CreateToolBar()
  113.         toolbar.AddSimpleTool(200, wx.Bitmap('icns/Nuevo.png'), 'Nuevo', '')
  114.         toolbar.AddSimpleTool(2, wx.Bitmap('icns/abrir.png'), 'Abrir', '')
  115.         toolbar.AddSimpleTool(3, wx.Bitmap('icns/Guardar.png'), 'Guardar', '')
  116.         toolbar.AddSeparator()
  117.  
  118.         toolbar.AddSimpleTool(33, wx.Bitmap('icns/cortar.png'), 'Cortar', '')
  119.         toolbar.AddSimpleTool(34, wx.Bitmap('icns/copiar.png'), 'copiar', '')
  120.         toolbar.AddSimpleTool(35, wx.Bitmap('icns/pegar.png'), 'Pegar', '')
  121.         toolbar.AddSeparator()
  122.  
  123.         toolbar.AddSimpleTool(36, wx.Bitmap('icns/des.png'), 'Deshacer', '')
  124.         toolbar.AddSimpleTool(37, wx.Bitmap('icns/rea.png'), 'Rehacer', '')
  125.         toolbar.Realize()
  126.  
  127.         ##Eventos de herramientas
  128.  
  129.  
  130. app = wx.App()
  131. text(None, -1, 'Hipertext Editor')
  132. app.MainLoop()
  #2 (permalink)  
Antiguo 10/01/2009, 07:29
 
Fecha de Ingreso: octubre-2004
Ubicación: COLOMBIA
Mensajes: 240
Antigüedad: 19 años, 6 meses
Puntos: 3
Respuesta: como hacer guardar al programa

La variable Pickle no está definida, para ti qué es el Pickle?
__________________
Revista Código Latino
SoloCodigo
  #3 (permalink)  
Antiguo 10/01/2009, 12:23
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: como hacer guardar al programa

Pickle es el módulo de Python para serialización de objetos.

Como todo módulo, tenés que importarlo antes de poder utilizarlo.


Saludos.
  #4 (permalink)  
Antiguo 10/01/2009, 15:50
 
Fecha de Ingreso: mayo-2008
Mensajes: 499
Antigüedad: 16 años
Puntos: 1
Respuesta: como hacer guardar al programa

pero si lo importo si va a gravar el archivo y tambien lo va a abrir por que tampoco los abre
como lo importo asi?
import pickle o tiene otro palabra
  #5 (permalink)  
Antiguo 10/01/2009, 21:52
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: como hacer guardar al programa

En principio sí, hacer

import pickle

puede ser suficiente. Sin embargo, dada la forma en la que lo estás usando (como "Pickle.algo") creo que en realidad deberías hacer

from pickle import Pickle

o referenciar como pickle.Pickle.load() y similares.

Me gustaría darte más detalles pero la única vez que usé pickle fue simplemente con

import pickle
objeto = pickle.loads(cadena conteniendo el objeto serializado)


Saludos.
  #6 (permalink)  
Antiguo 11/01/2009, 14:38
 
Fecha de Ingreso: mayo-2008
Mensajes: 499
Antigüedad: 16 años
Puntos: 1
Respuesta: como hacer guardar al programa

imposible me sale error ya intente import pickle from pickle import Pickle y cPickle etc,etc

Traceback (most recent call last):
File "C:\Python25\kjk.py", line 3, in <module>
from pickle import cPickle
ImportError: cannot import name cPickle

no habra otra manera de hecer guardar y abrir a este programa?
  #7 (permalink)  
Antiguo 11/01/2009, 15:49
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: como hacer guardar al programa

cpickle es un módulo diferente, con capacidades diferentes. No son el mismo y es lógico que obtengas ese error (es básicamente lo mismo que si hicieras "from pickle import wx")

¿Qué errores te muestran las otras formas de incluir el módulo?
  #8 (permalink)  
Antiguo 12/01/2009, 20:30
 
Fecha de Ingreso: mayo-2008
Mensajes: 499
Antigüedad: 16 años
Puntos: 1
Respuesta: como hacer guardar al programa

no se se puede usar los modulos' sys y os' para hacer que guarde y abra archivos en vez de usar pickle?
  #9 (permalink)  
Antiguo 13/01/2009, 07:45
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: como hacer guardar al programa

pues sí, perfectamente podés utilizar

archivo = open('ruta', 'modo')
contenido = archivo.read()
archivo.close()

para leer el contenido, y

archivo = open('ruta', 'modo')
archivo.write(la cadena que quieras escribir)
archivo.close()

para escribirlo.
Como estabas utilizando pickle asumí que querías trabajar con objetos serializados, pero si las funciones "normales" te valen, fijate por acá: http://docs.python.org/library/stdty...n-file-objects


Saludos.
  #10 (permalink)  
Antiguo 14/01/2009, 18:51
 
Fecha de Ingreso: mayo-2008
Mensajes: 499
Antigüedad: 16 años
Puntos: 1
Respuesta: como hacer guardar al programa

ya quedo pero no puedo hacer que abra los archivos con el estilo que tiene hasta que no escribo primero y luego los abro y si los abre con el stilo

y asi quedo...
Código python:
Ver original
  1. import wx
  2. import os
  3.  
  4.  
  5. class text(wx.Frame):
  6.     def __init__(self, parent, id, title):
  7.         wx.Frame.__init__(self, parent, id, title, size = (600, 550))
  8.  
  9. #barra de menu
  10.         menubar = wx.MenuBar()
  11. #menu: contenido
  12.         menu = wx.Menu() #archivo
  13.         nuev = wx.Menu()
  14.         nuev.Append(100, "&Nuevo\tCtrl+N", 'Nuevo archivo')
  15.         nuev.Append(200, "Nueva &Ventana\tCtrl+O", 'Nueva ventana para otro archivo')
  16.         menu.AppendMenu(-1, "Nuevo", nuev)
  17.         menu.Append(2, "&Abrir\tCtrl+A", "Abrir Archivo existente")
  18.         menu.Append(3, "&Guardar\tCtrl+G", "Guardar archivo")
  19.         menu.AppendSeparator()
  20.         menu.Append(5, "&Salir\tCtrl+Q", "Salir del programa")
  21.         edit = wx.Menu()
  22.         edit.Append(10, "&Deshacer\tCtrl+Z", 'deshacer ultimo')
  23.         edit.Append(11, "&Rehacer\tCtrl+U", 'hacer denuevo')
  24.         edit.AppendSeparator()
  25.         edit.Append(12, "&Seleccionar Todo\tCtrl+E", 'seleccionar todo el texto')
  26.         edit.AppendSeparator()
  27.         edit.Append(13, "&Cortar\tCtrl+X", 'cortar texto seleccionado')
  28.         edit.Append(14, "&Pegar\tCtrl+V", 'pegar texto')
  29.         edit.Append(15, "Cop&iar\tCtrl+C", 'Copiar texto seleccionado')
  30.         help = wx.Menu()
  31.         help.Append(20, "&Acerca de...", 'Sobre este programa')
  32.         menubar.Append(menu, "&Archivo")
  33.         menubar.Append(edit, "&Edicion")
  34.         menubar.Append(help, "A&yuda")
  35.         self.SetMenuBar(menubar)
  36.        
  37. #texto enrikecido
  38.         self.text = wx.TextCtrl(self, -1, style = wx.TE_MULTILINE|wx.TE_RICH)
  39.         self.text.SetInsertionPoint(0)
  40.         points = self.text.GetFont().GetPointSize()
  41.         f = wx.Font(points + 2, wx.MODERN, wx.NORMAL, wx.BOLD, False)
  42.         self.text.SetStyle(13, 12, wx.TextAttr("white", wx.NullColour, f))
  43.         self.text.SetBackgroundColour('Black')
  44.  
  45. #eventos
  46.         self.Bind(wx.EVT_MENU, self.OnSalir, id=5)
  47.         self.Bind(wx.EVT_MENU, self.OnVentan, id=200)
  48.         self.Bind(wx.EVT_MENU, self.OnOpen, id=2)
  49.         self.Bind(wx.EVT_MENU, self.OnSave, id=3)
  50.        
  51. #mostrar
  52.         self.filename = ""
  53.         self.dirname = ''
  54.         self.CreateStatusBar()
  55.         self.Centre()
  56.         self.createToolBar()
  57.         self.Show(True)
  58.  
  59.     def OnOpen(self, event):
  60.         dlg = wx.FileDialog(self, "Escojer archivo", self.dirname, "", "*.*", wx.OPEN)
  61.         if dlg.ShowModal() == wx.ID_OK:
  62.             self.filename=dlg.GetFilename()
  63.             self.dirname=dlg.GetDirectory()
  64.  
  65.             filehandle=open(os.path.join(self.dirname, self.filename),'r')
  66.             self.text.SetValue(filehandle.read())
  67.             filehandle.close()
  68.  
  69.             self.SetTitle("Edicion"+self.filename)
  70.         dlg.Destroy()
  71.  
  72.     def OnSave(self, event):
  73.         # abrir el archivo
  74.         dlg = wx.FileDialog(self, "Numbre del archivo", self.dirname, "", "*.*", \
  75.                 wx.SAVE | wx.OVERWRITE_PROMPT)
  76.         if dlg.ShowModal() == wx.ID_OK:
  77.             # grabar el contenido
  78.             itcontains = self.text.GetValue()
  79.  
  80.               # Abrir el archivo
  81.             self.filename=dlg.GetFilename()
  82.             self.dirname=dlg.GetDirectory()
  83.             filehandle=open(os.path.join(self.dirname, self.filename),'w')
  84.             filehandle.write(itcontains)
  85.             filehandle.close()
  86.         dlg.Destroy()
  87.        
  88.     def OnSalir(self, event):
  89.         self.Close()
  90.  
  91.     def OnVentan(self, event):
  92.         editor = text(None, -1, 'Text Editor')
  93.         editor.Centre()
  94.         editor.Show()
  95.  
  96.     def createToolBar(self):
  97.         toolbar = self.CreateToolBar()
  98.         toolbar.AddSimpleTool(200, wx.Bitmap('icns/Nuevo.png'), 'Nuevo', '')
  99.         toolbar.AddSimpleTool(2, wx.Bitmap('icns/abrir.png'), 'Abrir', '')
  100.         toolbar.AddSimpleTool(3, wx.Bitmap('icns/Guardar.png'), 'Guardar', '')
  101.         toolbar.AddSeparator()
  102.  
  103.         toolbar.AddSimpleTool(33, wx.Bitmap('icns/cortar.png'), 'Cortar', '')
  104.         toolbar.AddSimpleTool(34, wx.Bitmap('icns/copiar.png'), 'copiar', '')
  105.         toolbar.AddSimpleTool(35, wx.Bitmap('icns/pegar.png'), 'Pegar', '')
  106.         toolbar.AddSeparator()
  107.  
  108.         toolbar.AddSimpleTool(36, wx.Bitmap('icns/des.png'), 'Deshacer', '')
  109.         toolbar.AddSimpleTool(37, wx.Bitmap('icns/rea.png'), 'Rehacer', '')
  110.         toolbar.Realize()
  111.  
  112.         ##Eventos de herramientas
  113.  
  114.  
  115. app = wx.App()
  116. text(None, -1, 'Hipertext Editor')
  117. app.MainLoop()
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 17:47.