From andsux en gmail.com Sat Jan 1 01:44:25 2011 From: andsux en gmail.com (Andrey Antoukh) Date: Sat, 1 Jan 2011 01:44:25 +0100 Subject: [Python-es] =?utf-8?q?computaci=C3=B3n_paralela_y_concurrente?= In-Reply-To: <1293831578.2075.64.camel@piqui> References: <1293831578.2075.64.camel@piqui> Message-ID: El día 31 de diciembre de 2010 22:39, tny escribió: > Feliz año a todos. > > Me he dado prisa para terminar la web y publicar las librerías. > > Las librerías están probadas y reprobadas. > > Las que considero más interesantes son la de computación paralela y > concurrente, y la de E/S asincrono. > > Estaré encantado de responder cualquier duda, tanto por aquí como por > privado para no saturar la lista. > > http://es.pykiss.com > > Espero que os sea de utilidad. > Gracias. > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > Hola. Antes de nada, feliz año! :D He estado mirando la documentación de las bibliotecas que publicaste, y me genera una duda y ya que el lema es KISS, no seria mas simple usar un simple un "decorator class" para hacer esto lo que hace tu bibl. "fork" Aquí un ejemplos: http://paste.niwi.be/17/raw/ http://paste.niwi.be/18/raw/ Esta hecho con threads y ya se que no son escalables a múltiples núcleos, pero puedes substituirlo por "Process" y por casa llamada al método se generaría un proceso. Y no se si tu biblioteca tiene opciones de sincronizacion y la posibilidad de envío de mensajes entre procesos...(Lo digo que lo que viene de serie en python creo que es muchísimo mas completo y mas simple a mi parecer) En el apartado de creación de excepciones, en mi opinión, no ayudas en nada... Creo que es mas simple: class MyError(Exception): pass que: from pykiss.auto_exceptions import make_exception excepcion1 = make_exception('excepcion1') Ademas de las excepciones pueden tener sus propios métodos y variables de instancia, que serian también mucho mas simples de definir como siempre se define que con el método de tu biblioteca. Y antes de nada, como siempre, no quiero mal interpretaciones, solo genero una critica constructiva y no quiero ofender a nadie. Un saludo. Andrei. -- http://twitter.com/andsux http://www.niwi.be **** http://www.freebsd.org/ http://www.postgresql.org/ http://www.python.org/ http://www.djangoproject.com/ "Linux is for people who hate Windows, BSD is for people who love UNIX" "Social Engineer -> Because there is no patch for human stupidity" From a.porrua en gmail.com Sat Jan 1 05:56:57 2011 From: a.porrua en gmail.com (tny) Date: Sat, 01 Jan 2011 05:56:57 +0100 Subject: [Python-es] =?iso-8859-1?q?computaci=F3n_paralela_y_concurrente?= In-Reply-To: References: <1293831578.2075.64.camel@piqui> Message-ID: <1293857817.1996.53.camel@tny-desktop> > Hola. Antes de nada, feliz año! :D > > He estado mirando la documentación de las bibliotecas que publicaste, > y me genera una duda y ya que el lema es KISS, no seria mas simple > usar un simple un "decorator class" para hacer esto lo que hace tu > bibl. "fork" > > Aquí un ejemplos: > http://paste.niwi.be/17/raw/ > http://paste.niwi.be/18/raw/ > > Esta hecho con threads y ya se que no son escalables a múltiples > núcleos, pero puedes substituirlo por "Process" y por casa llamada al > método se generaría un proceso. Y no se si tu biblioteca tiene > opciones de sincronizacion y la posibilidad de envío de mensajes entre > procesos...(Lo digo que lo que viene de serie en python creo que es > muchísimo mas completo y mas simple a mi parecer) Mi biblioteca tiene dos partes, una que es para lanzar funciones y ejecutar callbacks con sus valores de retorno, y otra que lanza procesos que se comunican mediante eventos. este ejemplo me parece muy kiss, creo que no necesita ni comentarios, que se entiende sólo. #!/usr/bin/env python #-*- coding:utf-8 -*- import hashlib from pykiss import fork usuarios = ['admin', 'good', 'pepe'] passwords = ['admin', '123456', 'password'] passw = '6f1a2f61d94139dbddc3238d4f46ce2f' control = fork.Control() def comprobar(usuario, password): if passw == hashlib.md5(usuario+'@'+password).hexdigest(): return (usuario, password) def mostrar(retorno): if retorno: print "User:%s\nPassword:%s"%retorno for usuario in usuarios: for password in passwords: control.fork_function(mostrar, comprobar, usuario, password) control.main() Lo mismo con procesos que se envían eventos. #!/usr/bin/env python #-*- coding:utf-8 -*- import hashlib from pykiss import fork from pykiss import callback import sys usuarios = ['user', 'admin', 'good', 'pepe'] passwords = ['', 'admin', '123456','good', 'password'] passw = '6f1a2f61d94139dbddc3238d4f46ce2f' control = fork.Control() class Comprobar_Process(fork.Process): def __init__(self, unixsocket, user): fork.Process.__init__(self, unixsocket) self.instance_events['parar'] = self.parar self.user = user def parar(self, event): raise fork.Break_loop_exception() def main(self): for password in passwords: if passw == hashlib.md5(self.user+'@'+password).hexdigest(): self.send_event(keyword = 'user en pass encontrado', user=self.user, password=password) sys.exit() else: try: self.poll.do(0) except fork.Break_loop_exception: break self.send_event(keyword='process normaly ended',exit=0) sys.exit(0) def encontrado(driver, event): print "User:%s\nPassword:%s"%(event['user'],event['password']) for driver in control.drivers.itervalues(): driver.send_event(keyword = 'parar') control.events['user en pass encontrado'] = encontrado for usuario in usuarios: control.fork(fork.Driver, callback.Callback(Comprobar_Process, user=usuario)) control.main() ¿Cómo harías eso con decorator class y la biblioteca estandar? ¿Quedaría legible? Cuando necesité trabajar con procesos leí y releí la biblioteca estandar de python y te aseguro que me pareció demasiado complicado. Ser demasiado completo está reñido con ser simple. Así que hice sólo lo que necesitaba. > > En el apartado de creación de excepciones, en mi opinión, no ayudas en nada... > Creo que es mas simple: > class MyError(Exception): pass > > que: > from pykiss.auto_exceptions import make_exception > excepcion1 = make_exception('excepcion1') > > Ademas de las excepciones pueden tener sus propios métodos y variables > de instancia, que serian también mucho mas simples de definir como > siempre se define que con el método de tu biblioteca. > > Y antes de nada, como siempre, no quiero mal interpretaciones, solo > genero una critica constructiva y no quiero ofender a nadie. > con esto: class MyError(Exception): pass no puedes luego hacer así: raise MyError(msg='ha pasado tal cosa', foo='tralari', bar='tralará) para luego en el except hacer así except MyError as e: print e.foo y con MyError = make_exception('MyError') si puedes hacer todo eso. Pero tienes tu parte de razón, porque simplemente bastaba con class MyError(auto_exceptions.Base_exception): pass A veces uno se obceca y va por el camino más dificil. No sé cual quedará más legible... Me lo pienso e igual cambio eso. Todas son librerías que estaba usando yo en mis propios desarrollos, porque lo encuentro más sencillo que hacerlo de otro modo, y me parecio que podía ser de utilidad a más personas. Así que las miré con lupa para eliminar cualquier bug que se me hubiera escapado, y las comenté y documenté lo mejor que pude. > Un saludo. > Andrei. > > No ofendes, y agradezco tu crítica, aquí estamos todos para aprender. From dvilla en gmx.net Sat Jan 1 22:56:11 2011 From: dvilla en gmx.net (David Villa) Date: Sat, 1 Jan 2011 22:56:11 +0100 Subject: [Python-es] =?utf-8?q?computaci=C3=B3n_paralela_y_concurrente?= In-Reply-To: <1293831578.2075.64.camel@piqui> References: <1293831578.2075.64.camel@piqui> Message-ID: Hola: Si no me equivoco, tu callback.Callback es prácticamente equivalente al functools.partial() de la librería estándar. Y así a primera vista, diría que gran parte de tu módulo fork puede hacerse con multiprocessing (de Python-2.6) y concurrent.futures (de Python-3.2). De éste último estaría muy bien tener un backport. En todo caso tendría que mirarlo más despacio. Saludos 2010/12/31 tny > Feliz año a todos. > > Me he dado prisa para terminar la web y publicar las librerías. > > Las librerías están probadas y reprobadas. > > Las que considero más interesantes son la de computación paralela y > concurrente, y la de E/S asincrono. > > Estaré encantado de responder cualquier duda, tanto por aquí como por > privado para no saturar la lista. > > http://es.pykiss.com > > Espero que os sea de utilidad. > Gracias. > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From parraymartinez en terra.es Sun Jan 2 01:28:04 2011 From: parraymartinez en terra.es (=?ISO-8859-1?Q?Rub=E9n?=) Date: Sun, 02 Jan 2011 01:28:04 +0100 Subject: [Python-es] Wiki de wxPython Message-ID: <1293928084.9176.6.camel@afrodita> Buenas lista, Estoy en un proyecto creado con wxPython y me he encontrado con la mayor parte de la documentación en inglés. Viendo que somos muchos los que no dominamos este idioma se me ha ocurrido crear una wiki para wxPython en español que puede ser del interés de mucha gente de la lista -una vez tenga contenido, obviamente-. Os hago participe de ella y os invito a aportar vuestro granito de arena si es vuestra intención, y que en un futuro pueda ser un lugar de referencia donde ampliar conocimientos sobre este binding. Un saludo. http://wxpython,foroubuntu.es ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From maedca en gmail.com Sun Jan 2 01:31:45 2011 From: maedca en gmail.com (maedca en gmail.com) Date: Sun, 2 Jan 2011 00:31:45 +0000 Subject: [Python-es] Wiki de wxPython In-Reply-To: <1293928084.9176.6.camel@afrodita> References: <1293928084.9176.6.camel@afrodita> Message-ID: <210791708-1293928306-cardhu_decombobulator_blackberry.rim.net-1501864590-@bda802.bisx.prod.on.blackberry> Muy buena iniciativa !!!! Enviado desde mi BlackBerry de Movistar -----Original Message----- From: Rubén Sender: python-es-bounces+maedca=gmail.com en python.org Date: Sun, 02 Jan 2011 01:28:04 To: python-es Reply-To: La lista de python en castellano Subject: [Python-es] Wiki de wxPython _______________________________________________ Python-es mailing list Python-es en python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/ From parraymartinez en terra.es Sun Jan 2 01:38:04 2011 From: parraymartinez en terra.es (=?ISO-8859-1?Q?Rub=E9n?=) Date: Sun, 02 Jan 2011 01:38:04 +0100 Subject: [Python-es] Wiki de wxPython In-Reply-To: <1293928084.9176.6.camel@afrodita> References: <1293928084.9176.6.camel@afrodita> Message-ID: <1293928684.9176.8.camel@afrodita> -----Mensaje original----- De: Rubén Reply-to: La lista de python en castellano Para: python-es Asunto: [Python-es] Wiki de wxPython Fecha: Sun, 02 Jan 2011 01:28:04 +0100 Buenas lista, Estoy en un proyecto creado con wxPython y me he encontrado con la mayor parte de la documentación en inglés. Viendo que somos muchos los que no dominamos este idioma se me ha ocurrido crear una wiki para wxPython en español que puede ser del interés de mucha gente de la lista -una vez tenga contenido, obviamente-. Os hago participe de ella y os invito a aportar vuestro granito de arena si es vuestra intención, y que en un futuro pueda ser un lugar de referencia donde ampliar conocimientos sobre este binding. Un saludo. http://wxpython.foroubuntu.es Perdón, la url era incorrecta: http://wxpython.foroubuntu.es/ Un saludo. _______________________________________________ Python-es mailing list Python-es en python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/ ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From a.porrua en gmail.com Sun Jan 2 01:47:41 2011 From: a.porrua en gmail.com (tny) Date: Sun, 02 Jan 2011 01:47:41 +0100 Subject: [Python-es] =?iso-8859-1?q?computaci=F3n_paralela_y_concurrente?= In-Reply-To: References: <1293831578.2075.64.camel@piqui> Message-ID: <1293929261.2420.65.camel@tny-desktop> El sáb, 01-01-2011 a las 22:56 +0100, David Villa escribió: > Hola: > > Si no me equivoco, tu callback.Callback es prácticamente equivalente > al > functools.partial() de la librería estándar. > Tienes toda la razón, acabo de mirarlo y es exactamente lo mismo. Así que para la proxima revisión posiblemente marque callback.Callback como obsoleto y recomiende el uso de functools.partial() en su lugar. Muchas Gracias. > Y así a primera vista, diría que gran parte de tu módulo fork puede > hacerse > con multiprocessing (de Python-2.6) y concurrent.futures (de > Python-3.2). De > éste último estaría muy bien tener un backport. En todo caso tendría > que > mirarlo más despacio. > > Saludos concurrent.futures no lo conocía, lo acabo de mirar por encima, y parece muy interesante a la hora de ejecutar funciones de forma paralela, pero no veo que establezca ningún modo de comunicación entre procesos. Mi librería pretende ser más sencilla y de mayor nivel que Multiprocessing. Personalmente me resulta más intuitivo emplear eventos y callbacks. De todos modos no son excluyentes, puedes usar mi sistema de eventos, y también semaforos, queues y demás sistemas de sincronización y comunicación que multiprocessing ofrece. un ejemplo que usa pykiss.fork y multiprocessing.Array #!/usr/bin/env python #-*- coding:utf-8 -*- from pykiss import fork from multiprocessing import Array arr = Array('i', 3) #este objeto será compartido por todos los procesos #este proceso hará operaciones con los valores de arr class Operar_Process(fork.Process): def __init__(self, unixsocket): fork.Process.__init__(self, unixsocket) #asignamos los callbacks a los eventos self.instance_events['sumar'] = self.sumar self.instance_events['multiplicar'] = self.multiplicar #suma lo que haya en arr y lo devuelve con un evento def sumar(self, event): res = sum(arr) self.send_event(keyword='resultado', resultado=res) #multiplica lo que haya en arr y lo devuelve con un evento def multiplicar(self, event): res = 1 for i in arr: res*=i self.send_event(keyword='resultado', resultado=res) #este proceso asignará valores a arr class Asignar_Process(fork.Process): def __init__(self, unixsocket): fork.Process.__init__(self, unixsocket) self.instance_events['asignar'] = self.asignar def asignar(self, event): indice = event['indice'] valor = event['valor'] arr[indice]=valor #Este driver hace más cómodo enviar el evento 'asignar' class Asignar_Driver(fork.Driver): def __setitem__(self, key, value): self.send_event(keyword = 'asignar', indice = key, valor = value) #este callback en el proceso principal mostrará los resultados def resultado(driver, evento): print evento['resultado'] #creamos el objeto principal que gestiona los procesos control = fork.Control() #asignamos el callback al evento control.events['resultado'] = resultado #creamos los procesos operar = control.fork(fork.Driver, Operar_Process) asignar = control.fork(Asignar_Driver, Asignar_Process) #les mandamos hacer cosas asignar[0] = 5 asignar[1] = 7 operar.send_event(keyword = 'sumar') asignar[2] = 12 operar.send_event(keyword = 'sumar') asignar[0] = 15 operar.send_event(keyword = 'multiplicar') #Procesamos todos los eventos que hayan llegado al proceso principal control.do() Un saludo From ALGG78 en telefonica.net Sun Jan 2 09:38:17 2011 From: ALGG78 en telefonica.net (ALGG78 en telefonica.net) Date: Sun, 2 Jan 2011 09:38:17 +0100 (CET) Subject: [Python-es] Reenv: Wiki de wxPython Message-ID: <5194830.1952041293957497891.JavaMail.root@wm3> Hola. Si queréis podéis contar conmigo, ya que trabajo con wxPython normalmente, y en el blog de "El viaje del navegante" hablo bastante de wx en español, claro. Un cordial saludo. Ángel Luis García García http://elviajedelnavegante.blogspot.com ----Mensaje original---- De: parraymartinez en terra.es Fecha: 02/01/2011 1:38 Para: "La lista de python en castellano" Asunto: Re: [Python-es] Wiki de wxPython -----Mensaje original----- De: Rubén Reply-to: La lista de python en castellano Para: python-es Asunto: [Python-es] Wiki de wxPython Fecha: Sun, 02 Jan 2011 01:28:04 +0100 Buenas lista, Estoy en un proyecto creado con wxPython y me he encontrado con la mayor parte de la documentación en inglés. Viendo que somos muchos los que no dominamos este idioma se me ha ocurrido crear una wiki para wxPython en español que puede ser del interés de mucha gente de la lista -una vez tenga contenido, obviamente-. Os hago participe de ella y os invito a aportar vuestro granito de arena si es vuestra intención, y que en un futuro pueda ser un lugar de referencia donde ampliar conocimientos sobre este binding. Un saludo. http://wxpython.foroubuntu.es Perdón, la url era incorrecta: http://wxpython.foroubuntu.es/ Un saludo. _______________________________________________ Python-es mailing list Python-es en python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/ ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From maedca en gmail.com Sun Jan 2 22:10:14 2011 From: maedca en gmail.com (maedca en gmail.com) Date: Sun, 2 Jan 2011 21:10:14 +0000 Subject: [Python-es] Reenv: Wiki de wxPython In-Reply-To: <5194830.1952041293957497891.JavaMail.root@wm3> References: <5194830.1952041293957497891.JavaMail.root@wm3> Message-ID: <1668540631-1294002616-cardhu_decombobulator_blackberry.rim.net-1320959554-@bda802.bisx.prod.on.blackberry> Exelente blog elviajedelnavegante estoy estudiandolo!!!! Interesantes post opino que seria bueno colocar estos how-to en la wiki !! Saludos Enviado desde mi BlackBerry de Movistar -----Original Message----- From: "ALGG78 en telefonica.net" Sender: python-es-bounces+maedca=gmail.com en python.org Date: Sun, 2 Jan 2011 09:38:17 To: Reply-To: "ALGG78 en telefonica.net" , La lista de python en castellano Subject: [Python-es] Reenv: Wiki de wxPython _______________________________________________ Python-es mailing list Python-es en python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/ From pycron en gmail.com Tue Jan 4 21:58:02 2011 From: pycron en gmail.com (Bruno Optavio Sans) Date: Tue, 4 Jan 2011 14:58:02 -0600 Subject: [Python-es] consulta sobre los treestore pygtk Message-ID: Hola lista, saludos y feliz año nuevo a todos. Estoy trabajando un programita en el que he creado un treestore. categoria_ |-musicas | |----Rock | |----Pop |-peliculas |----Suspenso |----Accion lo que yo quiero es que al escoger alguna categoria, por ejemplo si selecciono Rock, yo tengo que mostrar informacion sobre rock . si selecciono Suspenso, me muestre informacion solo de peliculas de suspenso. Ahora bien, mostrar la informacion no es el problema, lo que deseo solamente es ver de que forma puedo se yo cuando le dieron clic a la categoria, especificamente sus opciones, si, eso, solo quiero saber cuando seleccionan Rock, Pop, Suspenso y Accion y con eso yo muestro segun sea el caso la informacion.. Pero si pueden darme una idea de como conseguir lo que deseo, si es por manejo de señales, o si me recomiendan algun material para ello, ya que en el tutorial de pygtk no esta muy claro. Gracias una vez mas desde ya por sus aportes. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From a.porrua en gmail.com Wed Jan 5 00:01:33 2011 From: a.porrua en gmail.com (tny) Date: Wed, 05 Jan 2011 00:01:33 +0100 Subject: [Python-es] consulta sobre los treestore pygtk In-Reply-To: References: Message-ID: <1294182093.1699.6.camel@piqui> El mar, 04-01-2011 a las 14:58 -0600, Bruno Optavio Sans escribió: > Ahora bien, mostrar la informacion no es el problema, lo que deseo > solamente es ver de que forma puedo se yo cuando le dieron clic a la > categoria, especificamente sus opciones, si, eso, solo quiero saber > cuando > seleccionan Rock, Pop, Suspenso y Accion y con eso yo muestro segun > sea el > caso la informacion.. > > Pero si pueden darme una idea de como conseguir lo que deseo, si es > por > manejo de señales, o si me recomiendan algun material para ello, ya > que en > el tutorial de pygtk no esta muy claro. > > Gracias una vez mas desde ya por sus aportes. def clicar(treeview, path, columna): opcion = self.modelo[path][0] #hacer lo que sea modelo=gtk.TreeStore(str) treeview. = gtk.treeview(modelo) treeview.connect('row-activated', clicar) Si te he entendido bien, tiene que ser algo así. Suerte From pycron en gmail.com Thu Jan 6 16:11:55 2011 From: pycron en gmail.com (Bruno Optavio Sans) Date: Thu, 6 Jan 2011 10:11:55 -0500 Subject: [Python-es] consulta sobre los treestore pygtk In-Reply-To: <1294182093.1699.6.camel@piqui> References: <1294182093.1699.6.camel@piqui> Message-ID: def clicar(treeview, path, columna): opcion = self.modelo[path][0] tny, Gracias, fijate que es exactamente lo que quiero. Solo que se me escapo decir que soy novato en pygtk, y bueno estuve estudiando lo de la funcion "*clicar*", a decir verdad, veo que se conecta el *"treeview"* al evento "*row-activated*", pero a la funcion clicar se le pasan los parametros, "*treeview*", "*path"* y "*columna*". A decir verdad, no estoy muy claro de los parametros "path" y "columna", incluso estuve revizando el manual de pygtk y se habla tambien de un "treeiter", en tu ejemplo tny, no se usa, lo de columna creo que se refiere al treeviewcolumn, el path es algo asi como camino del arbol, pero no se como usarlo. Ok, llegado a este punto, me gustaria que pudieran brindarme algun tipo de explicacion espeficamente de que es lo que hacen o como trabajan estos parametros. Si algun material disponible acerca de esto mejor, mientras tratare de encontrar algun codigo de ejemplo. Desde ya mis agradecimientos totales a su aporte. Gracias tny una vez mas. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From minoztro en gmail.com Thu Jan 6 22:11:06 2011 From: minoztro en gmail.com (Milton Galo Patricio Inostroza Aguilera) Date: Thu, 6 Jan 2011 18:11:06 -0300 Subject: [Python-es] consulta sobre los treestore pygtk In-Reply-To: References: <1294182093.1699.6.camel@piqui> Message-ID: El día 6 de enero de 2011 12:11, Bruno Optavio Sans escribió: > def clicar(treeview, path, columna): >        opcion = self.modelo[path][0] > > tny, Gracias, fijate que es exactamente lo que quiero. > >  Solo que se me escapo decir que soy novato en pygtk, y bueno estuve > estudiando lo de la funcion "clicar", a decir verdad, veo que se conecta el > "treeview" al evento "row-activated", pero a la funcion clicar se le pasan > los parametros, "treeview", "path" y "columna". path lo puedes ver como la fila en donde hiciste click y columna es tal cual (se refiera a la columna del model) > >   A decir verdad, no estoy muy claro de los parametros "path" y "columna", > incluso estuve revizando el manual de pygtk y se habla tambien de un > "treeiter", en tu ejemplo tny, no se usa, lo de columna creo que se refiere > al treeviewcolumn, el path es algo asi como camino del arbol, pero no se > como usarlo. > >  Ok, llegado a este punto, me gustaria que pudieran brindarme algun tipo de > explicacion espeficamente de que es lo que hacen o como trabajan estos > parametros. Si algun material disponible acerca de esto mejor, mientras > tratare de encontrar algun codigo de ejemplo. http://www.pygtk.org/pygtk2tutorial/sec-TreeModelInterface.html#sec-ReferringToTreeModelRows > >  Desde ya mis agradecimientos totales a su aporte. Gracias tny una vez mas. > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- Milton From minoztro en gmail.com Thu Jan 6 23:20:12 2011 From: minoztro en gmail.com (Milton Galo Patricio Inostroza Aguilera) Date: Thu, 6 Jan 2011 19:20:12 -0300 Subject: [Python-es] =?utf-8?q?difflib_utilizado_para_p=C3=A1ginas_web?= Message-ID: Estimad en s: Me han pedido poder notificar a los usuarios de los cambios que sufren algunas paginas web de forma periodica (inserción, eliminacion, modificación). Estoy utilizando difflib para hacer esta tarea, pero a veces tengo comportamientos errones, es decir, existen veces que cuando ciertas columnas se parecen (version antigua v/s nueva) simplemente no me marca ningún cambio :-S. Estoy utilizando de esta manera la librería: diff_texto(codecs.open(antiguo).read().splitlines(),codecs.open(nuevo).read().splitlines()) donde diff_texto es la función que hace el trabajo real: s = difflib.SequenceMatcher(None, antiguo, nuevo) for e in s.get_opcodes(): ...bla... lo extraño es que si utilizo unified_diff o el HtmlDiff si me muestra los cambios correctos...alguien se ha topado con este tipo de problemas?, saludos! -- Milton From a.porrua en gmail.com Thu Jan 6 23:28:48 2011 From: a.porrua en gmail.com (tny) Date: Thu, 06 Jan 2011 23:28:48 +0100 Subject: [Python-es] consulta sobre los treestore pygtk In-Reply-To: References: <1294182093.1699.6.camel@piqui> Message-ID: <1294352928.5081.5.camel@tny-desktop> El jue, 06-01-2011 a las 10:11 -0500, Bruno Optavio Sans escribió: > def clicar(treeview, path, columna): > opcion = self.modelo[path][0] > > tny, Gracias, fijate que es exactamente lo que quiero. > > Solo que se me escapo decir que soy novato en pygtk, y bueno estuve > estudiando lo de la funcion "*clicar*", a decir verdad, veo que se > conecta > el *"treeview"* al evento "*row-activated*", pero a la funcion clicar > se le > pasan los parametros, "*treeview*", "*path"* y "*columna*". > > A decir verdad, no estoy muy claro de los parametros "path" y > "columna", > incluso estuve revizando el manual de pygtk y se habla tambien de un > "treeiter", en tu ejemplo tny, no se usa, lo de columna creo que se > refiere > al treeviewcolumn, el path es algo asi como camino del arbol, pero no > se > como usarlo. > > Ok, llegado a este punto, me gustaria que pudieran brindarme algun > tipo de > explicacion espeficamente de que es lo que hacen o como trabajan estos > parametros. Si algun material disponible acerca de esto mejor, > mientras > tratare de encontrar algun codigo de ejemplo. > > Desde ya mis agradecimientos totales a su aporte. Gracias tny una vez > mas. Tienes un tutorial en español con ejemplos. http://www.pygtk.org/pygtk2tutorial-es/ch-TreeViewWidget.html From eliben en gmail.com Fri Jan 7 16:02:06 2011 From: eliben en gmail.com (Eli Bendersky) Date: Fri, 7 Jan 2011 17:02:06 +0200 Subject: [Python-es] =?iso-8859-1?q?difflib_utilizado_para_p=E1ginas_web?= In-Reply-To: References: Message-ID: difflib tiene un "bug" en Python 2.6 y 3.1 (mira el http://bugs.python.org/issue2986) que puede causar los problemas que tienes. En Python 2.7 y 3.2 hay un parametro nuevo en difflib.SequenceMatcher que puede eliminar el "bug". Eli 2011/1/7 Milton Galo Patricio Inostroza Aguilera > Estimad en s: > > Me han pedido poder notificar a los usuarios de los cambios que sufren > algunas paginas web de forma periodica (inserción, eliminacion, > modificación). Estoy utilizando difflib para hacer esta tarea, pero a > veces tengo comportamientos errones, es decir, existen veces que > cuando ciertas columnas se parecen (version antigua v/s nueva) > simplemente no me marca ningún cambio :-S. > > Estoy utilizando de esta manera la librería: > > > diff_texto(codecs.open(antiguo).read().splitlines(),codecs.open(nuevo).read().splitlines()) > > donde diff_texto es la función que hace el trabajo real: > > s = difflib.SequenceMatcher(None, antiguo, nuevo) > for e in s.get_opcodes(): > ...bla... > > > lo extraño es que si utilizo unified_diff o el HtmlDiff si me muestra > los cambios correctos...alguien se ha topado con este tipo de > problemas?, saludos! > > > > -- > Milton > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From morillas en gmail.com Fri Jan 7 19:51:22 2011 From: morillas en gmail.com (Luis Miguel Morillas) Date: Fri, 7 Jan 2011 19:51:22 +0100 Subject: [Python-es] =?iso-8859-1?q?difflib_utilizado_para_p=E1ginas_web?= In-Reply-To: References: Message-ID: Yo utilizo amara para parserar html. Para comparar documentos o subnodos utilizo las funciones de {{{amara.lib.treecompare}}} que permiten ignorar aspectos no significativos de los nodos (espacios en blanco, orden de atributos, espacios de nombres ...) Saludos, -- Luis Miguel El día 7 de enero de 2011 16:02, Eli Bendersky escribió: > difflib tiene un "bug" en Python 2.6 y 3.1 (mira el > http://bugs.python.org/issue2986) que puede causar los problemas que tienes. > En Python 2.7 y 3.2 hay un parametro nuevo en difflib.SequenceMatcher que > puede eliminar el "bug". > > Eli > > > > > 2011/1/7 Milton Galo Patricio Inostroza Aguilera >> >> Estimad en s: >> >> Me han pedido poder notificar a los usuarios de los cambios que sufren >> algunas paginas web de forma periodica (inserción, eliminacion, >> modificación).  Estoy utilizando difflib para hacer esta tarea, pero a >> veces tengo comportamientos errones, es decir, existen veces que >> cuando ciertas columnas se parecen (version antigua v/s nueva) >> simplemente no me marca ningún cambio :-S. >> >> Estoy utilizando de esta manera la librería: >> >> >> diff_texto(codecs.open(antiguo).read().splitlines(),codecs.open(nuevo).read().splitlines()) >> >> donde diff_texto es la función que hace el trabajo real: >> >> s = difflib.SequenceMatcher(None, antiguo, nuevo) >>    for e in s.get_opcodes(): >>      ...bla... >> >> >> lo extraño es que si utilizo unified_diff o el HtmlDiff si me muestra >> los cambios correctos...alguien se ha topado con este tipo de >> problemas?, saludos! >> >> >> >> -- >> Milton >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > From sanreikaj.foros en gmail.com Fri Jan 7 20:33:35 2011 From: sanreikaj.foros en gmail.com (Alvaro Manrique) Date: Fri, 07 Jan 2011 15:03:35 -0430 Subject: [Python-es] Diccionarios Message-ID: <4D276A8F.4060709@gmail.com> Buenas Tardes, Tengo una pequeña duda, estoy creando un diccionario el cual va a contar con 2 claves, lo estoy creando asi */lDbFiles=dict([("Base",variable1),("File",variable2)])/* si coloco un print a lDbFiles, obtengo lo siguiente */{'Base': 'SGEMERCALHOGAR_MILU', 'File': 'SGEMERCALHOGAR_MILU.SQL'}/* si hago un */print lDbFiles['Base']/*, obtengo: */SGEMERCALHOGAR_MILU/* Hasta ahi todo bien, eso me dice que mi diccionario esta bien, de igual forma corrijanme si estoy mal. Luego trato de recorrerlo asi */for lDbF in lDbFiles:/* Si dentro del for traro de hacer esto por ejemplo */print lDbF/* Solo obtengo: */Base/* Agradezco la ayuda que me puedan brindar sobre como debo recorrer mi diccionario o que hice mal al momento de crearlo -- Alvaro Manrique Programador PIN: 221C390B Skype: alvaro_manrique ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From elpasmo.nospam en gmail.com Fri Jan 7 21:02:50 2011 From: elpasmo.nospam en gmail.com (=?ISO-8859-1?Q?Javier_Moreno_L=F3pez?=) Date: Fri, 7 Jan 2011 21:02:50 +0100 Subject: [Python-es] Diccionarios In-Reply-To: <4D276A8F.4060709@gmail.com> References: <4D276A8F.4060709@gmail.com> Message-ID: Aquí tienes un par de ejemplos que ilustran cómo debes hacerlo Álvaro. Si tienes cualquier duda, dispara :) 2011/1/7 Alvaro Manrique > Buenas Tardes, > > Tengo una pequeña duda, estoy creando un diccionario el cual va a contar > con 2 claves, lo estoy creando asi > > > *lDbFiles=dict([("Base",variable1),("File",variable2)])* > > si coloco un print a lDbFiles, obtengo lo siguiente > > *{'Base': 'SGEMERCALHOGAR_MILU', 'File': 'SGEMERCALHOGAR_MILU.SQL'}* > > si hago un *print lDbFiles['Base']*, obtengo: > > *SGEMERCALHOGAR_MILU* > > Hasta ahi todo bien, eso me dice que mi diccionario esta bien, de igual > forma corrijanme si estoy mal. > > Luego trato de recorrerlo asi > > *for lDbF in lDbFiles:* > > Si dentro del for traro de hacer esto por ejemplo > > *print lDbF* > > Solo obtengo: > > *Base* > > > Agradezco la ayuda que me puedan brindar sobre como debo recorrer mi > diccionario o que hice mal al momento de crearlo > > -- > Alvaro Manrique > Programador > PIN: 221C390B > Skype: alvaro_manrique > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From elpasmo.nospam en gmail.com Fri Jan 7 21:03:13 2011 From: elpasmo.nospam en gmail.com (=?ISO-8859-1?Q?Javier_Moreno_L=F3pez?=) Date: Fri, 7 Jan 2011 21:03:13 +0100 Subject: [Python-es] Diccionarios In-Reply-To: References: <4D276A8F.4060709@gmail.com> Message-ID: Adjunto enlace que se me olvida: http://diveintopython.org/native_data_types/mapping_lists.html Perdonad las molestias. 2011/1/7 Javier Moreno López > Aquí tienes un par de ejemplos que ilustran cómo debes hacerlo Álvaro. Si > tienes cualquier duda, dispara :) > > 2011/1/7 Alvaro Manrique > >> Buenas Tardes, >> >> Tengo una pequeña duda, estoy creando un diccionario el cual va a >> contar con 2 claves, lo estoy creando asi >> >> >> *lDbFiles=dict([("Base",variable1),("File",variable2)])* >> >> si coloco un print a lDbFiles, obtengo lo siguiente >> >> *{'Base': 'SGEMERCALHOGAR_MILU', 'File': 'SGEMERCALHOGAR_MILU.SQL'}* >> >> si hago un *print lDbFiles['Base']*, obtengo: >> >> *SGEMERCALHOGAR_MILU* >> >> Hasta ahi todo bien, eso me dice que mi diccionario esta bien, de igual >> forma corrijanme si estoy mal. >> >> Luego trato de recorrerlo asi >> >> *for lDbF in lDbFiles:* >> >> Si dentro del for traro de hacer esto por ejemplo >> >> *print lDbF* >> >> Solo obtengo: >> >> *Base* >> >> >> Agradezco la ayuda que me puedan brindar sobre como debo recorrer mi >> diccionario o que hice mal al momento de crearlo >> >> -- >> Alvaro Manrique >> Programador >> PIN: 221C390B >> Skype: alvaro_manrique >> >> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From listas en soft-com.es Fri Jan 7 21:03:30 2011 From: listas en soft-com.es (=?ISO-8859-1?Q?Oswaldo_Hern=E1ndez?=) Date: Fri, 07 Jan 2011 21:03:30 +0100 Subject: [Python-es] Diccionarios In-Reply-To: <4D276A8F.4060709@gmail.com> References: <4D276A8F.4060709@gmail.com> Message-ID: <4D277192.7010507@soft-com.es> El 07/01/2011 20:33, Alvaro Manrique escribió: > Buenas Tardes, > ... > > for lDbF in lDbFiles: > > Si dentro del for traro de hacer esto por ejemplo > > print lDbF > > Solo obtengo: > > Base > print lDbFiles[lDbF] -- Oswaldo Hernández From algg78 en telefonica.net Fri Jan 7 21:20:29 2011 From: algg78 en telefonica.net (=?ISO-8859-1?Q?=C1ngel_Luis_Garc=EDa_Garc=EDa?=) Date: Fri, 7 Jan 2011 21:20:29 +0100 Subject: [Python-es] Diccionarios In-Reply-To: <4D276A8F.4060709@gmail.com> References: <4D276A8F.4060709@gmail.com> Message-ID: Hola Álvaro. Teniendo que 'd' es un diccionario, si quieres recorrer los items de un diccionario, utiliza el iterador: i = d.iteritems(); i.next() Si quieres iterar sobre las claves: i = d.iterkeys(); i.next() Si quieres iterar sobre los valores: i = d.itervalues(); i.next() Saludos. Ángel luis García García http://elviajedelnavegante.blogspot.com El 7 de enero de 2011 20:33, Alvaro Manrique escribió: > Buenas Tardes, > > Tengo una pequeña duda, estoy creando un diccionario el cual va a contar > con 2 claves, lo estoy creando asi > > > *lDbFiles=dict([("Base",variable1),("File",variable2)])* > > si coloco un print a lDbFiles, obtengo lo siguiente > > *{'Base': 'SGEMERCALHOGAR_MILU', 'File': 'SGEMERCALHOGAR_MILU.SQL'}* > > si hago un *print lDbFiles['Base']*, obtengo: > > *SGEMERCALHOGAR_MILU* > > Hasta ahi todo bien, eso me dice que mi diccionario esta bien, de igual > forma corrijanme si estoy mal. > > Luego trato de recorrerlo asi > > *for lDbF in lDbFiles:* > > Si dentro del for traro de hacer esto por ejemplo > > *print lDbF* > > Solo obtengo: > > *Base* > > > Agradezco la ayuda que me puedan brindar sobre como debo recorrer mi > diccionario o que hice mal al momento de crearlo > > -- > Alvaro Manrique > Programador > PIN: 221C390B > Skype: alvaro_manrique > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From sanreikaj.foros en gmail.com Fri Jan 7 21:26:20 2011 From: sanreikaj.foros en gmail.com (Alvaro Manrique) Date: Fri, 07 Jan 2011 15:56:20 -0430 Subject: [Python-es] Diccionarios In-Reply-To: References: <4D276A8F.4060709@gmail.com> Message-ID: <4D2776EC.8020402@gmail.com> Muchas gracias por la ayuda, voy a probar y les paso como solucione. Mil Gracias. El 07/01/11 15:50, Ángel Luis García García escribió: > Hola Álvaro. Teniendo que 'd' es un diccionario, si quieres recorrer > los items de un diccionario, utiliza el iterador: > > i = d.iteritems(); i.next() > > Si quieres iterar sobre las claves: > > i = d.iterkeys(); i.next() > > Si quieres iterar sobre los valores: > > i = d.itervalues(); i.next() > > Saludos. > > Ángel luis García García > http://elviajedelnavegante.blogspot.com > > > El 7 de enero de 2011 20:33, Alvaro Manrique > > escribió: > > Buenas Tardes, > > Tengo una pequeña duda, estoy creando un diccionario el cual va > a contar con 2 claves, lo estoy creando asi > > > */lDbFiles=dict([("Base",variable1),("File",variable2)])/* > > si coloco un print a lDbFiles, obtengo lo siguiente > > */{'Base': 'SGEMERCALHOGAR_MILU', 'File': 'SGEMERCALHOGAR_MILU.SQL'}/* > > si hago un */print lDbFiles['Base']/*, obtengo: > > */SGEMERCALHOGAR_MILU/* > > Hasta ahi todo bien, eso me dice que mi diccionario esta bien, de > igual forma corrijanme si estoy mal. > > Luego trato de recorrerlo asi > > */for lDbF in lDbFiles:/* > > Si dentro del for traro de hacer esto por ejemplo > > */print lDbF/* > > Solo obtengo: > > */Base/* > > > Agradezco la ayuda que me puedan brindar sobre como debo recorrer > mi diccionario o que hice mal al momento de crearlo > > -- > Alvaro Manrique > Programador > PIN: 221C390B > Skype: alvaro_manrique > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > > > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ -- Alvaro Manrique Programador PIN: 221C390B Skype: alvaro_manrique ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From dsarmientos en gmail.com Fri Jan 7 21:28:56 2011 From: dsarmientos en gmail.com (Daniel Sarmiento) Date: Fri, 7 Jan 2011 15:28:56 -0500 Subject: [Python-es] Diccionarios In-Reply-To: References: <4D276A8F.4060709@gmail.com> Message-ID: No se si esto sea muy eficiente, pero que tal? for k, v in d.items(): print k, v 2011/1/7 Ángel Luis García García : > Hola Álvaro. Teniendo que 'd' es un diccionario, si quieres recorrer los > items de un diccionario, utiliza el iterador: > i = d.iteritems(); i.next() > Si quieres iterar sobre las claves: > i = d.iterkeys(); i.next() > Si quieres iterar sobre los valores: > i = d.itervalues(); i.next() > Saludos. > Ángel luis García García > http://elviajedelnavegante.blogspot.com > > El 7 de enero de 2011 20:33, Alvaro Manrique > escribió: >> >> Buenas Tardes, >> >>    Tengo una pequeña duda, estoy creando un diccionario el cual va a >> contar con 2 claves, lo estoy creando asi >> >> >> lDbFiles=dict([("Base",variable1),("File",variable2)]) >> >> si coloco un print a lDbFiles, obtengo lo siguiente >> >> {'Base': 'SGEMERCALHOGAR_MILU', 'File': 'SGEMERCALHOGAR_MILU.SQL'} >> >> si hago un print lDbFiles['Base'], obtengo: >> >> SGEMERCALHOGAR_MILU >> >> Hasta ahi  todo bien, eso me dice que mi diccionario esta bien, de igual >> forma corrijanme si estoy mal. >> >> Luego trato de recorrerlo asi >> >> for lDbF in lDbFiles: >> >> Si dentro del for traro de hacer esto por ejemplo >> >> print lDbF >> >> Solo obtengo: >> >> Base >> >> >> Agradezco la ayuda que me puedan brindar sobre como debo recorrer mi >> diccionario o que hice mal al momento de crearlo >> >> -- >> Alvaro Manrique >> Programador >> PIN: 221C390B >> Skype: alvaro_manrique >> >> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> > > > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > From sanreikaj.foros en gmail.com Fri Jan 7 22:23:58 2011 From: sanreikaj.foros en gmail.com (Alvaro Manrique) Date: Fri, 07 Jan 2011 16:53:58 -0430 Subject: [Python-es] Diccionarios In-Reply-To: References: <4D276A8F.4060709@gmail.com> Message-ID: <4D27846E.7020906@gmail.com> Realice varias pruebas con todas las opciones aportadas y el resultado que tengo es que tengo una lista de items a iterar, es decir, cada par clave:valor es un item, para ir a la segunda clave es una nueva iteracion, lo que busco hacer es un diccionario como los devuelve la funcion fetchall() de la clase mysql al crear un cursor, esta funcion crea un diccionario de manera tal que cuando hago for db in dbs:, puedo hacer db['clave'], no se si me explico bien. Esto lo necesito asi para poder extraer los valores de las dos claves del diccionario en la misma iteracion. Sera que lo que necesito es un diccionario de diccionarios??? El 07/01/11 15:58, Daniel Sarmiento escribió: > No se si esto sea muy eficiente, pero que tal? > > for k, v in d.items(): > print k, v > > > > 2011/1/7 Ángel Luis García García: >> Hola Álvaro. Teniendo que 'd' es un diccionario, si quieres recorrer los >> items de un diccionario, utiliza el iterador: >> i = d.iteritems(); i.next() >> Si quieres iterar sobre las claves: >> i = d.iterkeys(); i.next() >> Si quieres iterar sobre los valores: >> i = d.itervalues(); i.next() >> Saludos. >> Ángel luis García García >> http://elviajedelnavegante.blogspot.com >> >> El 7 de enero de 2011 20:33, Alvaro Manrique >> escribió: >>> Buenas Tardes, >>> >>> Tengo una pequeña duda, estoy creando un diccionario el cual va a >>> contar con 2 claves, lo estoy creando asi >>> >>> >>> lDbFiles=dict([("Base",variable1),("File",variable2)]) >>> >>> si coloco un print a lDbFiles, obtengo lo siguiente >>> >>> {'Base': 'SGEMERCALHOGAR_MILU', 'File': 'SGEMERCALHOGAR_MILU.SQL'} >>> >>> si hago un print lDbFiles['Base'], obtengo: >>> >>> SGEMERCALHOGAR_MILU >>> >>> Hasta ahi todo bien, eso me dice que mi diccionario esta bien, de igual >>> forma corrijanme si estoy mal. >>> >>> Luego trato de recorrerlo asi >>> >>> for lDbF in lDbFiles: >>> >>> Si dentro del for traro de hacer esto por ejemplo >>> >>> print lDbF >>> >>> Solo obtengo: >>> >>> Base >>> >>> >>> Agradezco la ayuda que me puedan brindar sobre como debo recorrer mi >>> diccionario o que hice mal al momento de crearlo >>> >>> -- >>> Alvaro Manrique >>> Programador >>> PIN: 221C390B >>> Skype: alvaro_manrique >>> >>> >>> _______________________________________________ >>> Python-es mailing list >>> Python-es en python.org >>> http://mail.python.org/mailman/listinfo/python-es >>> FAQ: http://python-es-faq.wikidot.com/ >>> >> >> >> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ -- Alvaro Manrique Programador PIN: 221C390B Skype: alvaro_manrique From juanperojas en gmail.com Sat Jan 8 03:06:30 2011 From: juanperojas en gmail.com (Juanpe :P) Date: Fri, 7 Jan 2011 21:06:30 -0500 Subject: [Python-es] ordenar por extension Message-ID: saludos amigos. he programado un script que me muestra la carepeta y blos archivos que contiene filtrados por solo los que quiero mostrar. y lo hace pero mezclado por extensiones, necesito que los muestre ordenados por la extension, osea primero lo .c luego los .cpp y al final .h, en cada carpeta, he googleado pero no he encontrado nada q me sirva con sort, haber si alguien me da unas luces =) este es el codigo import os ruta = "/ruta/carpeta/archivo/codigo" for base, dirs, files in os.walk(ruta): for file in [f for f in files if f.lower().endswith((".c", ".cpp", ".h"))]: dir_actual = base.split(ruta)[1] if dir != dir_actual: dir = dir_actual print "\nla carpeta " + dir + " contiene: \n" print file gracias de antemano. -- -------------------------------------------------------------- Juan Percy Rojas Cruz Software Engineer - PLANDET Trujillo --------------------------------------------------------------- cel: (74)-979079140 - RPM *667423 http://juanpe.lugcix.org skype: juanperojas Linux Registered User #398380 ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From a.porrua en gmail.com Sat Jan 8 10:26:35 2011 From: a.porrua en gmail.com (tny) Date: Sat, 08 Jan 2011 10:26:35 +0100 Subject: [Python-es] ordenar por extension In-Reply-To: References: Message-ID: <1294478795.2069.13.camel@tny-desktop> El vie, 07-01-2011 a las 21:06 -0500, Juanpe :P escribió: > saludos amigos. > > he programado un script que me muestra la carepeta y blos archivos que > contiene filtrados por solo los que quiero mostrar. y lo hace pero > mezclado > por extensiones, necesito que los muestre ordenados por la extension, > osea > primero lo .c luego los .cpp y al final .h, en cada carpeta, he > googleado > pero no he encontrado nada q me sirva con sort, haber si alguien me da > unas > luces =) > > este es el codigo > > import os > ruta = "/ruta/carpeta/archivo/codigo" > for base, dirs, files in os.walk(ruta): > for file in [f for f in files if f.lower().endswith((".c", ".cpp", > ".h"))]: > dir_actual = base.split(ruta)[1] > if dir != dir_actual: > dir = dir_actual > print "\nla carpeta " + dir + " contiene: \n" > print file > > > gracias de antemano. > > Si sólo van a ser esas 3 extensiones puede hacerlo un poco a mano. import os ruta = "/ruta/carpeta/archivo/codigo" for base, dirs, files in os.walk(ruta): filesc=[f for f in files if f.lower.endswith('.c')] filescpp=[f for f in files if f.lower.endswith('.cpp')] filesh=[f for f in files if f.lower.endswith('.h')] for file in filesc + filescpp + filesh: dir_actual = base.split(ruta)[1] if dir != dir_actual: dir = dir_actual print "\nla carpeta " + dir + " contiene: \n" print file No es elegante, pero funciona. utilizando sort puedes hacerlo así def extension(key): i=key.rfind('.') return key[i:] import os ruta = "/ruta/carpeta/archivo/codigo" for base, dirs, files in os.walk(ruta): files.sort(key = extension) for file in [f for f in files if f.lower().endswith((".c", ".cpp", ".h"))]: dir_actual = base.split(ruta)[1] if dir != dir_actual: dir = dir_actual print "\nla carpeta " + dir + " contiene: \n" print file No está muy bien hecho, porque tiene un problema con los archivos que no tienen extensión. Te toca a ti mejorarlo. From davidmenhur en gmail.com Sat Jan 8 10:35:45 2011 From: davidmenhur en gmail.com (=?UTF-8?B?RGHPgGlk?=) Date: Sat, 8 Jan 2011 10:35:45 +0100 Subject: [Python-es] ordenar por extension In-Reply-To: <1294478795.2069.13.camel@tny-desktop> References: <1294478795.2069.13.camel@tny-desktop> Message-ID: Fusilando tu propio código, import os ruta = "/ruta/carpeta/archivo/codigo" for base, dirs, files in os.walk(ruta): for file in [f for f in files if f.lower().endswith((".c", ".cpp", ".h"))]: dir_actual = base.split(ruta)[1] if dir != dir_actual: dir = dir_actual print "\nla carpeta " + dir + " contiene: \n" print file for file in [f for f in files if f.lower().endswith((".cpp"))]: dir_actual = base.split(ruta)[1] if dir != dir_actual: dir = dir_actual print "\nla carpeta " + dir + " contiene: \n" print file for file in [f for f in files if f.lower().endswith((".h"))]: dir_actual = base.split(ruta)[1] if dir != dir_actual: dir = dir_actual print "\nla carpeta " + dir + " contiene: \n" print file También puedes intentar ordenarlos a mano. Echa un vistazo en Numerical Recipes de William H. Press et al. para algoritmos eficientes. From pyarnau en gmail.com Sat Jan 8 13:03:57 2011 From: pyarnau en gmail.com (Arnau Sanchez) Date: Sat, 8 Jan 2011 13:03:57 +0100 Subject: [Python-es] ordenar por extension In-Reply-To: References: Message-ID: <20110108130357.0bf38ce4@gmail.com> On Fri, 7 Jan 2011 21:06:30 -0500 Juanpe :P wrote: > he programado un script que me muestra la carepeta y blos archivos que > contiene filtrados por solo los que quiero mostrar. y lo hace pero mezclado > por extensiones, necesito que los muestre ordenados por la extension Abstrayéndonos de los detalles de os.walk, podríamos escribir: def by_extension(path): path0, extension = os.path.splitext(path) return extension, path0 filenames = ["b2.c", "a.cpp", "b.c", "b.h", "c.cpp"] filtered_filenames = (f for f in filenames if f.lower().endswith((".c", ".cpp", ".h"))) sorted_filenames = sorted(filtered_filenames, key=by_extension) print(sorted_filenames) # ['b.c', 'b2.c', 'a.cpp', 'c.cpp', 'b.h'] http://wiki.python.org/moin/HowTo/Sorting/#KeyFunctions From ccheddi en hotmail.com Sun Jan 9 02:32:31 2011 From: ccheddi en hotmail.com (Cesar Cespedes Loayza) Date: Sun, 9 Jan 2011 01:32:31 +0000 Subject: [Python-es] Diccionarios In-Reply-To: <4D27846E.7020906@gmail.com> References: <4D276A8F.4060709@gmail.com> , , <4D27846E.7020906@gmail.com> Message-ID: Te refieres a mostrar solo las claves:dbs.keys() --César Céspedes Loayza > Date: Fri, 7 Jan 2011 16:53:58 -0430 > From: sanreikaj.foros en gmail.com > To: python-es en python.org > Subject: Re: [Python-es] Diccionarios > > Realice varias pruebas con todas las opciones aportadas y el resultado > que tengo es que tengo una lista de items a iterar, es decir, > cada par clave:valor es un item, para ir a la segunda clave es una nueva > iteracion, > lo que busco hacer es un diccionario como los devuelve la funcion > fetchall() de la clase mysql al crear un cursor, > esta funcion crea un diccionario de manera tal que cuando hago for db > in dbs:, puedo hacer db['clave'], > no se si me explico bien. > > Esto lo necesito asi para poder extraer los valores de las dos claves > del diccionario en la misma iteracion. > > Sera que lo que necesito es un diccionario de diccionarios??? > > > > El 07/01/11 15:58, Daniel Sarmiento escribió: > > No se si esto sea muy eficiente, pero que tal? > > > > for k, v in d.items(): > > print k, v > > > > > > > > 2011/1/7 Ángel Luis García García: > >> Hola Álvaro. Teniendo que 'd' es un diccionario, si quieres recorrer los > >> items de un diccionario, utiliza el iterador: > >> i = d.iteritems(); i.next() > >> Si quieres iterar sobre las claves: > >> i = d.iterkeys(); i.next() > >> Si quieres iterar sobre los valores: > >> i = d.itervalues(); i.next() > >> Saludos. > >> Ángel luis García García > >> http://elviajedelnavegante.blogspot.com > >> > >> El 7 de enero de 2011 20:33, Alvaro Manrique > >> escribió: > >>> Buenas Tardes, > >>> > >>> Tengo una pequeña duda, estoy creando un diccionario el cual va a > >>> contar con 2 claves, lo estoy creando asi > >>> > >>> > >>> lDbFiles=dict([("Base",variable1),("File",variable2)]) > >>> > >>> si coloco un print a lDbFiles, obtengo lo siguiente > >>> > >>> {'Base': 'SGEMERCALHOGAR_MILU', 'File': 'SGEMERCALHOGAR_MILU.SQL'} > >>> > >>> si hago un print lDbFiles['Base'], obtengo: > >>> > >>> SGEMERCALHOGAR_MILU > >>> > >>> Hasta ahi todo bien, eso me dice que mi diccionario esta bien, de igual > >>> forma corrijanme si estoy mal. > >>> > >>> Luego trato de recorrerlo asi > >>> > >>> for lDbF in lDbFiles: > >>> > >>> Si dentro del for traro de hacer esto por ejemplo > >>> > >>> print lDbF > >>> > >>> Solo obtengo: > >>> > >>> Base > >>> > >>> > >>> Agradezco la ayuda que me puedan brindar sobre como debo recorrer mi > >>> diccionario o que hice mal al momento de crearlo > >>> > >>> -- > >>> Alvaro Manrique > >>> Programador > >>> PIN: 221C390B > >>> Skype: alvaro_manrique > >>> > >>> > >>> _______________________________________________ > >>> Python-es mailing list > >>> Python-es en python.org > >>> http://mail.python.org/mailman/listinfo/python-es > >>> FAQ: http://python-es-faq.wikidot.com/ > >>> > >> > >> > >> > >> _______________________________________________ > >> Python-es mailing list > >> Python-es en python.org > >> http://mail.python.org/mailman/listinfo/python-es > >> FAQ: http://python-es-faq.wikidot.com/ > >> > >> > > _______________________________________________ > > Python-es mailing list > > Python-es en python.org > > http://mail.python.org/mailman/listinfo/python-es > > FAQ: http://python-es-faq.wikidot.com/ > > -- > Alvaro Manrique Programador PIN: 221C390B Skype: alvaro_manrique > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From kikocorreoso en gmail.com Sun Jan 9 17:42:51 2011 From: kikocorreoso en gmail.com (Kiko) Date: Sun, 9 Jan 2011 17:42:51 +0100 Subject: [Python-es] Compilar python a javascript In-Reply-To: <4D15746F.8050004@jcea.es> References: <4BFD7F19.8020000@jcea.es> <4D15746F.8050004@jcea.es> Message-ID: 2010/12/25 Jesus Cea > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > On 25/12/10 04:44, lasizoillo wrote: > > 2010/5/26 Jesus Cea : > [...] > >> No quiero aprender (más) javascript si puedo evitarlo. > >> > > > > 7 meses ha tardado papa noel en traer tu regalo: > > http://syntensity.com/static/python.html > > > > 2.6 Mb de javascript quizá es un precio alto a pagar, pero es > > exactamente de lo que hablabas en el mail de mayo. Pero no solo eso, > > sino de pasar todo lo que se pueda compilar como llvm a javascript. > > Sabía que todo el karma que he ganado a lo largo de los años arreglando > máquinas con MS Windows de los amigos iba a servir para algo... :). > > Gracias por el enlace. Lo estudiaré tras las orgías (de comida) navideñas. > > - -- > Jesus Cea Avion _/_/ _/_/_/ _/_/_/ > jcea en jcea.es - http://www.jcea.es/ _/_/ _/_/ _/_/ _/_/ _/_/ > jabber / xmpp:jcea en jabber.org _/_/ > _/_/ _/_/_/_/_/ > . _/_/ _/_/ _/_/ _/_/ _/_/ > "Things are not so easy" _/_/ _/_/ _/_/ _/_/ _/_/ _/_/ > "My name is Dump, Core Dump" _/_/_/ _/_/_/ _/_/ _/_/ > "El amor es poner tu felicidad en la felicidad de otro" - Leibniz > En este debate de linkedid se habla un poco de este tema (creo que necesitaréis tener cuenta): http://www.linkedin.com/groupItem?view=&gid=25827&type=member&item=26771737&qid=f8b76d5d-1b99-4c42-9c57-6b1133465af4&goback=.gmp_25827(Why python is so bad for web front end ?) Un extracto del debate: "To take the most of value out of this discussion, I'm listing some interesting Python projects that tend to bring front end to Python (or Python to frontend): * Luban (http://docs.danse.us/pyre/luban/sphinx/) sophisticated and young UI framework, willing to unify UI programming, still have to demonstrate that it plays well with web frameworks * pyjamas (http://pyjs.org/) : a port of gwt, very smart, with will to unify ui programming like Luban, but not too supported like this discussion shows ;) , pyjamas may be hard to extend for newbies * pyvascript ( http://www.allbuttonspressed.com/blog/django/2010/07/PyvaScript-Pythonic-syntax-for-your-browser) : a python inspired langage for the browser, playing well with other javascript framework (especially jquery) * toscawidgets (http://toscawidgets.org/) : a patchwork of various, rather incomplete javascript frameworks wrappers, built on top of turbogears -- latest news 2008 * mochikit :(http://mochikit.com/) : a javascript framework inspired from python * coffeescript (http://jashkenas.github.com/coffee-script/) : funny initiative to make javascript look like Python, early development, supposed to play well with other js libs * skupt (http://www.skulpt.org/) : radical approach of python right in the browser, very beta * ironpython (http://www.voidspace.org.uk/ironpython/silverlight/index.shtml) : only for .net, Python in the browser with silverlight, early stage but promising * diesel framework (http://dieselweb.org/lib/) suppose to provide a UI package, but no clue about it" En general todo el hilo es interesante. Saludos. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From enunezf en gmail.com Mon Jan 10 21:25:01 2011 From: enunezf en gmail.com (=?ISO-8859-1?Q?Enrique_Nu=F1ez?=) Date: Mon, 10 Jan 2011 17:25:01 -0300 Subject: [Python-es] Archivo en uso Message-ID: Estimados: Buenas tardes, estoy haciendo un programa de copias de seguridad (a la medida) y quisiera saber si es posible determinar que un archivo, en particular bajo windows, esta siendo ocupado antes de iniciar su respaldo. Si es posible, agradeceré cualquier referencia. Atte. Enrique Nuñez From diacritica en elenya.net Tue Jan 11 11:25:41 2011 From: diacritica en elenya.net (=?ISO-8859-15?Q?Pablo_Ruiz_M=FAzquiz?=) Date: Tue, 11 Jan 2011 11:25:41 +0100 Subject: [Python-es] Oferta de trabajo Python-Django Message-ID: <4D2C3025.3040607@elenya.net> Buenas a todos, Me estoy encontrando que mucha gente que conoce python bien y que controla bastante de Django omite esto segundo en sus CVs y me estoy volviendo loco para encontrar gente djanguera potente. En el departamento de software libre que llevo en la empresa Entel (Madrid, España) estamos buscando dos personas fuertes en Django (el python se le supone) para incorporarse a una plantilla magnífica de "fosseros". El proyecto es de carácter internacional (India + Reino Unido) y trata de montar una plataforma de comercio online orientada a una nueva forma de comercio justo (de ahí lo de India). La incorporación sería inmediata y éste sería sólo el primer proyecto de muchos, claro. Si alguien está interesado o conoce a alguien potencialmente interesado, que me escriba sin ningún problema. También, si alguien conoce otro foro más adecuado (en Linkedin veo poco Django en español), le agradeceré que lo comente. Gracias y, lógicamente, perdón por el spam, pero RR.HH me insiste en que la gente no destaca lo de Django como yo pensaba. Pablo Ruiz Múzquiz From kikocorreoso en gmail.com Tue Jan 11 11:38:39 2011 From: kikocorreoso en gmail.com (Kiko) Date: Tue, 11 Jan 2011 11:38:39 +0100 Subject: [Python-es] Oferta de trabajo Python-Django In-Reply-To: <4D2C3025.3040607@elenya.net> References: <4D2C3025.3040607@elenya.net> Message-ID: El 11 de enero de 2011 11:25, Pablo Ruiz Múzquiz escribió: > Buenas a todos, > > Me estoy encontrando que mucha gente que conoce python bien y que controla > bastante de Django omite esto segundo en sus CVs y me estoy volviendo loco > para encontrar gente djanguera potente. > > En el departamento de software libre que llevo en la empresa Entel (Madrid, > España) estamos buscando dos personas fuertes en Django (el python se le > supone) para incorporarse a una plantilla magnífica de "fosseros". El > proyecto es de carácter internacional (India + Reino Unido) y trata de > montar una plataforma de comercio online orientada a una nueva forma de > comercio justo (de ahí lo de India). La incorporación sería inmediata y éste > sería sólo el primer proyecto de muchos, claro. > > Si alguien está interesado o conoce a alguien potencialmente interesado, > que me escriba sin ningún problema. > > También, si alguien conoce otro foro más adecuado (en Linkedin veo poco > Django en español), le agradeceré que lo comente. > > Gracias y, lógicamente, perdón por el spam, pero RR.HH me insiste en que la > gente no destaca lo de Django como yo pensaba. > > Pablo Ruiz Múzquiz > > Además de en esta lista, lo puedes publicar en [1], donde supongo que tendrás más suerte. [1] http://django.es/empleos/ Saludos. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From oscar.carballal en gmail.com Tue Jan 11 11:38:55 2011 From: oscar.carballal en gmail.com (Oscar Carballal) Date: Tue, 11 Jan 2011 11:38:55 +0100 Subject: [Python-es] Oferta de trabajo Python-Django In-Reply-To: <4D2C3025.3040607@elenya.net> References: <4D2C3025.3040607@elenya.net> Message-ID: <1294742335.1671.14.camel@cidadania.tegnix.com> O Mar, 11-01-2011 ás 11:25 +0100, Pablo Ruiz Múzquiz escribiu: > Buenas a todos, > > Me estoy encontrando que mucha gente que conoce python bien y que > controla bastante de Django omite esto segundo en sus CVs y me estoy > volviendo loco para encontrar gente djanguera potente. > > En el departamento de software libre que llevo en la empresa Entel > (Madrid, España) estamos buscando dos personas fuertes en Django (el > python se le supone) para incorporarse a una plantilla magnífica de > "fosseros". El proyecto es de carácter internacional (India + Reino > Unido) y trata de montar una plataforma de comercio online orientada a > una nueva forma de comercio justo (de ahí lo de India). La incorporación > sería inmediata y éste sería sólo el primer proyecto de muchos, claro. > > Si alguien está interesado o conoce a alguien potencialmente interesado, > que me escriba sin ningún problema. > > También, si alguien conoce otro foro más adecuado (en Linkedin veo poco > Django en español), le agradeceré que lo comente. > > Gracias y, lógicamente, perdón por el spam, pero RR.HH me insiste en que > la gente no destaca lo de Django como yo pensaba. > > Pablo Ruiz Múzquiz Vaya hombre, justo me pillas a mí empezando una bolsa de trabajo "djangera" realizando un proyecto de e-democracia (open source, por supuesto). Busca bien, porque gente que conozca django hay bastante, te sugiero que dejes una oferta de trabajo en StackOverflow, ahí hay mucha gente que controla de django (entre ellos unos cuantos españoles) Un saludo, Oscar Carballal From qualopec en gmail.com Wed Jan 12 19:53:09 2011 From: qualopec en gmail.com (Javier Santana) Date: Wed, 12 Jan 2011 19:53:09 +0100 Subject: [Python-es] Oferta de trabajo Python-Django In-Reply-To: <4D2C3025.3040607@elenya.net> References: <4D2C3025.3040607@elenya.net> Message-ID: 2011/1/11 Pablo Ruiz Múzquiz : > Me estoy encontrando que mucha gente que conoce python bien y que controla > bastante de Django omite esto segundo en sus CVs y me estoy volviendo loco > para encontrar gente djanguera potente. Encontrar gente potente en django en España es realmente fácil. Ahora mismo me vienen a la cabeza 10 ó 12 personas que son capaces de desarrollar un app en django y ponerla en producción con buena calidad. El problema es que por lo general están ya trabajando y muchas veces las empresas no están dispuestas a ir a buscar al candidato (quedan en una posición menos buena cara a la negociación) Si yo tuviese que buscar gente, de hecho así fue hace algún tiempo, buscaría en: - twitter: con un día de "escucha" encuentras a unos cuantos hablando de django o de cosas relacionadas. - djangopeople: hay un montón de desarrolladores dados de alta en España - djangogigs.com: para publicar trabajos relacionados - djangozen jobs: idem - la lista django-es, no se mueve mucho, pero sí hay gente de calidad - python jobs: En la sección de trabajos de la web oficial salen muy a menudo gente que busca desarrollo django. - linkedin hay grupos como has comentado. Suerte en la búsqueda. Si tienes una URL concreta donde esté la oferta podrías ponerla aquí y así podemos moverla entre conocidos/twitter/etc. -- http://javisantana.com From diacritica en elenya.net Wed Jan 12 20:53:46 2011 From: diacritica en elenya.net (=?ISO-8859-15?Q?Pablo_Ruiz_M=FAzquiz?=) Date: Wed, 12 Jan 2011 20:53:46 +0100 Subject: [Python-es] Oferta de trabajo Python-Django In-Reply-To: References: <4D2C3025.3040607@elenya.net> Message-ID: <4D2E06CA.2030902@elenya.net> Buenas, Gracias por los apuntes. "Quoteo" El 12/01/11 19:53, Javier Santana escribió: > > Encontrar gente potente en django en España es realmente fácil. Ahora > mismo me vienen a la cabeza 10 ó 12 personas que son capaces de > desarrollar un app en django y ponerla en producción con buena > calidad. El problema es que por lo general están ya trabajando y > muchas veces las empresas no están dispuestas a ir a buscar al > candidato (quedan en una posición menos buena cara a la negociación) En este caso, las instrucciones son primero buscar y luego ya vemos esa negociación. Lo que sí me comenta RR.HH y entiendo que os puede ser útil saberlo es que se percibe cierta reactivación del sector IT en general, con un alto % de gente que lleva 1 mes en su nuevo puesto. Da mucha rabia pero es raro que alguien acepte participar en un nuevo proceso de selección en esta situación y es comprensible. > Si yo tuviese que buscar gente, de hecho así fue hace algún tiempo, buscaría en: > > - twitter: con un día de "escucha" encuentras a unos cuantos hablando > de django o de cosas relacionadas. Eso es buena idea y me pongo a ello. > - djangopeople: hay un montón de desarrolladores dados de alta en España Ya hasta se me había olvidado y eso que me di de alta hace dos años. > - djangogigs.com: para publicar trabajos relacionados Aquí está el problema de la política concreta de RR.HH de cada compañía. Se tiene un protocolo y es difícil salirse pero voy a plantearlo. > - djangozen jobs: idem Ídem :-) > - la lista django-es, no se mueve mucho, pero sí hay gente de calidad Me ha dado cierto reparo ese poquísimo movimiento pero puede ser una opción. Quiero spamear lo justo, honestamente. > - python jobs: En la sección de trabajos de la web oficial salen muy a > menudo gente que busca desarrollo django. Ídem del otro ídem > - linkedin hay grupos como has comentado. Sí, supongo que tiraré también por ahí (así he contratado a varias personas de mucha responsabilidad) pero decidí empezar por método más, no sé, "push" con una lista de correo. Las actualizaciones de linkedin corren el riesgo de pasar como BACON. > Suerte en la búsqueda. Si tienes una URL concreta donde esté la oferta > podrías ponerla aquí y así podemos moverla entre > conocidos/twitter/etc. > La tengo https://www.infojobs.net/madrid/analista-programador-python-django/of-i80093f2c4742e4b218fb984ed9ffa8 Reconozco que no la había revisado, confiando como siempre en la gente de RR.HH (que en Entel son MUY buenos), pero un listero "lasizoillo" me apuntó un error gravísimo sobre "y luego harás proyectos java" que pedí hoy que se eliminara totalmente (porque es rotundamente falso). Creo que querían dar a entender que hay otras tecnologías disponibles pero yo quiero un pythonista de pro, que sepa java pues... poco me importa. Gracias por los comentarios de todo el mundo. En parte, quise comentar esto como una sensación de que el mercado de Django para un tanto "submarino" y que se pueden estar perdiendo muchas oportunidades para gente que realmente disfrutaría desarrollando con estas tecnologías. Saludos, Pablo From pixukideak en gmail.com Thu Jan 13 13:38:48 2011 From: pixukideak en gmail.com (pixu kideak) Date: Thu, 13 Jan 2011 13:38:48 +0100 Subject: [Python-es] Ejercicio Bolsas de caramelos Message-ID: Me han planteado un problemilla para realizarlo con Python pero no tengo muy claro por dónde atacar para resolverlo de manera eficiente. El problema es el siguiente: *"Tengo distintas bolsas de caramelos, cada bolsa digamos que tiene un nombre; (BolsaA, BolsaB ... )y cada bolsa se compone de caramelos diferentes (RegalizRojo, RegalizNegro, Chicle,Tiburón ...). * *"El tipo de caramelo puede estar tanto en un modelo de bolsa cómo en otra"* * * Lo que deseo realizar es, que el usuario pueda introducir cualquier tipo de caramelo y le muestre todas las unidades que se necesitan de ese tipo. Salu2 ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From reroes799 en gmail.com Thu Jan 13 14:28:12 2011 From: reroes799 en gmail.com (=?ISO-8859-1?Q?Ren=E9_Rolando_Elizalde_Solano?=) Date: Thu, 13 Jan 2011 08:28:12 -0500 Subject: [Python-es] Ejercicio Bolsas de caramelos In-Reply-To: References: Message-ID: Puedes dar a conocer el problema completo!! El 13 de enero de 2011 07:38, pixu kideak escribió: > > Me han planteado un problemilla para realizarlo con Python pero no tengo > muy claro por dónde atacar para resolverlo de manera eficiente. > > El problema es el siguiente: > *"Tengo distintas bolsas de caramelos, cada bolsa digamos que tiene un > nombre; (BolsaA, BolsaB ... )y cada bolsa se compone de caramelos diferentes > (RegalizRojo, RegalizNegro, Chicle,Tiburón ...). * > *"El tipo de caramelo puede estar tanto en un modelo de bolsa cómo en > otra"* > * > * > Lo qude deseo realizar es, que el usuario pueda introducir cualquier tipo > de caramelo y le muestre todas las unidades que se necesitan de ese tipo. > > Salu2 > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- René Rolando Elizalde Solano *Ingeniero en Sistemas - Universidad Nacional de Loja Miembro de la Sección de Software del Departamento de Telecomunicaciones e Información - Universidad Nacional de Loja Desarrollador Sistema de Gestión Académica. S G A * http://reroes79.wordpress.com http://reroes799.blogspot.com/ http://twitter.com/reroes http://www.facebook.com/reroes799 reroes en unl.edu.ec reroes799 en gmail.com reroes79 en hotmail.com reroes79 en yahoo.es ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From pyarnau en gmail.com Thu Jan 13 14:31:30 2011 From: pyarnau en gmail.com (Arnau Sanchez) Date: Thu, 13 Jan 2011 14:31:30 +0100 Subject: [Python-es] Ejercicio Bolsas de caramelos In-Reply-To: References: Message-ID: <20110113143130.2a443c91@gmail.com> On Thu, 13 Jan 2011 13:38:48 +0100 pixu kideak wrote: > El problema es el siguiente: > *"Tengo distintas bolsas de caramelos, cada bolsa digamos que tiene un > nombre; (BolsaA, BolsaB ... )y cada bolsa se compone de caramelos diferentes > (RegalizRojo, RegalizNegro, Chicle,Tiburón ...). * > *"El tipo de caramelo puede estar tanto en un modelo de bolsa cómo en otra"* ¿qué tipo de caramelo? > * > * ¿? > Lo que deseo realizar es, que el usuario pueda introducir cualquier tipo de ¿introducir cómo? > caramelo y le muestre todas las unidades que se necesitan de ese tipo. ¿que se necesitan para qué? Imagino que se habrá cortado el correo, porque no se entiende nada :-( En cualquier caso, define casos de tests: lista(s) de entrada de ejemplo y la salida requerida. From chakalinux en gmail.com Thu Jan 13 14:37:13 2011 From: chakalinux en gmail.com (chakalinux) Date: Thu, 13 Jan 2011 14:37:13 +0100 Subject: [Python-es] Archivo en uso In-Reply-To: References: Message-ID: si no te deja sobreescribirlo puedes usar *inuse.exe* que te va* *permitir la sustitución de archivos que estén en uso por parte del Sistema Operativo y que de otra manera no podrían ser sustituidos El 10 de enero de 2011 21:25, Enrique Nuñez escribió: > Estimados: > Buenas tardes, estoy haciendo un programa de copias de seguridad (a la > medida) y quisiera saber si es posible determinar que un archivo, en > particular bajo windows, esta siendo ocupado antes de iniciar su > respaldo. Si es posible, agradeceré cualquier referencia. > > Atte. > Enrique Nuñez > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From inturiasgary en gmail.com Thu Jan 13 14:39:38 2011 From: inturiasgary en gmail.com (Gary Inturias Rojas) Date: Thu, 13 Jan 2011 14:39:38 +0100 Subject: [Python-es] Ejercicio Bolsas de caramelos In-Reply-To: <20110113143130.2a443c91@gmail.com> References: <20110113143130.2a443c91@gmail.com> Message-ID: Podrias dar un poco mas de detalle?, como ser, alguna estructura de datos que tienes que utilizar, alguna libreria, si es con interfaz grafica?, en todo caso la mejor alternativa es orientada a objetos. El 13 de enero de 2011 14:31, Arnau Sanchez escribió: > On Thu, 13 Jan 2011 13:38:48 +0100 pixu kideak wrote: > > > El problema es el siguiente: > > *"Tengo distintas bolsas de caramelos, cada bolsa digamos que tiene un > > nombre; (BolsaA, BolsaB ... )y cada bolsa se compone de caramelos > diferentes > > (RegalizRojo, RegalizNegro, Chicle,Tiburón ...). * > > *"El tipo de caramelo puede estar tanto en un modelo de bolsa cómo en > otra"* > > ¿qué tipo de caramelo? > > > * > > * > > ¿? > > > Lo que deseo realizar es, que el usuario pueda introducir cualquier tipo > de > > ¿introducir cómo? > > > caramelo y le muestre todas las unidades que se necesitan de ese tipo. > > ¿que se necesitan para qué? > > Imagino que se habrá cortado el correo, porque no se entiende nada :-( > > En cualquier caso, define casos de tests: lista(s) de entrada de ejemplo y > la > salida requerida. > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From chelitoleiva en gmail.com Thu Jan 13 15:10:14 2011 From: chelitoleiva en gmail.com (Juan Marcelo Leiva Sandoval) Date: Thu, 13 Jan 2011 11:10:14 -0300 Subject: [Python-es] Ejercicio Bolsas de caramelos In-Reply-To: References: <20110113143130.2a443c91@gmail.com> Message-ID: <-5482263796852906994@unknownmsgid> Si lo trabajas Orientado a Objetos me interesa, es mi punto débil en la programación, saludos. Enviado desde mi iPhone El 13-01-2011, a las 10:40, Gary Inturias Rojas escribió: Podrias dar un poco mas de detalle?, como ser, alguna estructura de datos que tienes que utilizar, alguna libreria, si es con interfaz grafica?, en todo caso la mejor alternativa es orientada a objetos. El 13 de enero de 2011 14:31, Arnau Sanchez escribió: > On Thu, 13 Jan 2011 13:38:48 +0100 pixu kideak wrote: > > > El problema es el siguiente: > > *"Tengo distintas bolsas de caramelos, cada bolsa digamos que tiene un > > nombre; (BolsaA, BolsaB ... )y cada bolsa se compone de caramelos > diferentes > > (RegalizRojo, RegalizNegro, Chicle,Tiburón ...). * > > *"El tipo de caramelo puede estar tanto en un modelo de bolsa cómo en > otra"* > > ¿qué tipo de caramelo? > > > * > > * > > ¿? > > > Lo que deseo realizar es, que el usuario pueda introducir cualquier tipo > de > > ¿introducir cómo? > > > caramelo y le muestre todas las unidades que se necesitan de ese tipo. > > ¿que se necesitan para qué? > > Imagino que se habrá cortado el correo, porque no se entiende nada :-( > > En cualquier caso, define casos de tests: lista(s) de entrada de ejemplo y > la > salida requerida. > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > _______________________________________________ Python-es mailing list Python-es en python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/ ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From pixukideak en gmail.com Thu Jan 13 16:13:22 2011 From: pixukideak en gmail.com (pixu kideak) Date: Thu, 13 Jan 2011 16:13:22 +0100 Subject: [Python-es] Ejercicio Bolsas de caramelos In-Reply-To: <20110113143130.2a443c91@gmail.com> References: <20110113143130.2a443c91@gmail.com> Message-ID: 2011/1/13 Arnau Sanchez > On Thu, 13 Jan 2011 13:38:48 +0100 pixu kideak wrote: > > > El problema es el siguiente: > > *"Tengo distintas bolsas de caramelos, cada bolsa digamos que tiene un > > nombre; (BolsaA, BolsaB ... )y cada bolsa se compone de caramelos > diferentes > > (RegalizRojo, RegalizNegro, Chicle,Tiburón ...). * > > *"El tipo de caramelo puede estar tanto en un modelo de bolsa cómo en > otra"* > > ¿qué tipo de caramelo? > > La Bolsa puede tener cualquier tipo de caramelo; es decir, X chicles, Y Tiburones. > > ¿? > > > Lo que deseo realizar es, que el usuario pueda introducir cualquier tipo > de > > ¿introducir cómo? > Se introducen por teclado, no tiene ninguna interfaz. Es decir se muestra una prompt pidiendo el tipo de caramelo que deseamos contar :-) > > > caramelo y le muestre todas las unidades que se necesitan de ese tipo. > > ¿que se necesitan para qué? > Necesitamos saber cuantos caramelos necesitamos; por ejemplo, para pedir al suministrador de los caramelos ( por ejemplo chicles ) X unidades de ese tipo. > > Imagino que se habrá cortado el correo, porque no se entiende nada :-( > > En cualquier caso, define casos de tests: lista(s) de entrada de ejemplo y > la > salida requerida. > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From pixukideak en gmail.com Thu Jan 13 16:15:30 2011 From: pixukideak en gmail.com (pixu kideak) Date: Thu, 13 Jan 2011 16:15:30 +0100 Subject: [Python-es] Ejercicio Bolsas de caramelos In-Reply-To: References: <20110113143130.2a443c91@gmail.com> Message-ID: 2011/1/13 Gary Inturias Rojas > Podrias dar un poco mas de detalle?, como ser, alguna estructura de datos > que tienes que utilizar, alguna libreria, si es con interfaz grafica?, en > todo caso la mejor alternativa es orientada a objetos. > No tengo ningún requisito de librerias; ni es necesario una interfaz gráfica. El objetivo es que pueda introducir un tipo de caramelo ( chicle ) y que pueda mostrar cuantas unidades son necesarias. Si había pensado utilizar también OOP ;-) > > > El 13 de enero de 2011 14:31, Arnau Sanchez escribió: > > On Thu, 13 Jan 2011 13:38:48 +0100 pixu kideak wrote: >> >> > El problema es el siguiente: >> > *"Tengo distintas bolsas de caramelos, cada bolsa digamos que tiene un >> > nombre; (BolsaA, BolsaB ... )y cada bolsa se compone de caramelos >> diferentes >> > (RegalizRojo, RegalizNegro, Chicle,Tiburón ...). * >> > *"El tipo de caramelo puede estar tanto en un modelo de bolsa cómo en >> otra"* >> >> ¿qué tipo de caramelo? >> >> > * >> > * >> >> ¿? >> >> > Lo que deseo realizar es, que el usuario pueda introducir cualquier tipo >> de >> >> ¿introducir cómo? >> >> > caramelo y le muestre todas las unidades que se necesitan de ese tipo. >> >> ¿que se necesitan para qué? >> >> Imagino que se habrá cortado el correo, porque no se entiende nada :-( >> >> En cualquier caso, define casos de tests: lista(s) de entrada de ejemplo y >> la >> salida requerida. >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From sney2002 en gmail.com Thu Jan 13 16:37:10 2011 From: sney2002 en gmail.com (Jhonatan Sneider Salguero Villa) Date: Thu, 13 Jan 2011 10:37:10 -0500 Subject: [Python-es] Ejercicio Bolsas de caramelos In-Reply-To: References: <20110113143130.2a443c91@gmail.com> Message-ID: haciendo uso de mis dotes de psíquico XD, creo que el problema es: * a las diferentes bolsas le cabe cierto volumen * cada caramelo tiene un volumen X * si pido un bolsa Y con caramelos A ¿cuantos caramelos hacen falta para llenar la bolsa? no se, creo que por ahí va la cosa. El 13 de enero de 2011 10:15, pixu kideak escribió: > > > 2011/1/13 Gary Inturias Rojas > > Podrias dar un poco mas de detalle?, como ser, alguna estructura de datos >> que tienes que utilizar, alguna libreria, si es con interfaz grafica?, en >> todo caso la mejor alternativa es orientada a objetos. >> > No tengo ningún requisito de librerias; ni es necesario una interfaz > gráfica. El objetivo es que pueda introducir un tipo de caramelo ( chicle ) > y que pueda mostrar cuantas unidades son necesarias. > Si había pensado utilizar también OOP ;-) > >> >> >> El 13 de enero de 2011 14:31, Arnau Sanchez escribió: >> >> On Thu, 13 Jan 2011 13:38:48 +0100 pixu kideak wrote: >>> >>> > El problema es el siguiente: >>> > *"Tengo distintas bolsas de caramelos, cada bolsa digamos que tiene un >>> > nombre; (BolsaA, BolsaB ... )y cada bolsa se compone de caramelos >>> diferentes >>> > (RegalizRojo, RegalizNegro, Chicle,Tiburón ...). * >>> > *"El tipo de caramelo puede estar tanto en un modelo de bolsa cómo en >>> otra"* >>> >>> ¿qué tipo de caramelo? >>> >>> > * >>> > * >>> >>> ¿? >>> >>> > Lo que deseo realizar es, que el usuario pueda introducir cualquier >>> tipo de >>> >>> ¿introducir cómo? >>> >>> > caramelo y le muestre todas las unidades que se necesitan de ese tipo. >>> >>> ¿que se necesitan para qué? >>> >>> Imagino que se habrá cortado el correo, porque no se entiende nada :-( >>> >>> En cualquier caso, define casos de tests: lista(s) de entrada de ejemplo >>> y la >>> salida requerida. >>> _______________________________________________ >>> Python-es mailing list >>> Python-es en python.org >>> http://mail.python.org/mailman/listinfo/python-es >>> FAQ: http://python-es-faq.wikidot.com/ >>> >> >> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From rbetancor en gmail.com Thu Jan 13 16:47:45 2011 From: rbetancor en gmail.com (=?ISO-8859-1?Q?Ra=FAl_Alexis_Betancor_Santana?=) Date: Thu, 13 Jan 2011 15:47:45 +0000 Subject: [Python-es] =?iso-8859-1?q?Documentaci=F3n_o_ejemplos_sobre_pycur?= =?iso-8859-1?q?l?= Message-ID: Hola a todos, estoy intentando hacer un pequeño script-pasarela, que se conecte a un chat web y me pase los mensajes que allí se publican a mi servidor jabber. La parte jabber ya la tengo terminada, ahora me falta la parte de conexión al chat web. La web a la que quiero conectar usa Ajax-Chat, lo cual facilita bastante las cosas, puesto que una vez autenticado, solo tengo que consultar una URL concreta y la respuesta es siempre un xml con los mensajes nuevos. El problema viene en que necesito hacer un HTTPRequest tipo POST a la url de loging y guardar todas las cookies, para luego seguir reenviandolas en cada petición a la url de los mensajes. He estado mirando pycurl (con curl a pelo no consigo que me guarde las cookies en un fichero), pero la documentación es pésima. ¿alguien tiene algún ejemplo o sabe donde pillarlo?, buscando por google, he encontrado varios, en todos los casos, no consigo guardar las cookies que devuelve el site tras la autenticación correcta. Saludos ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From lasizoillo en gmail.com Thu Jan 13 16:52:35 2011 From: lasizoillo en gmail.com (lasizoillo) Date: Thu, 13 Jan 2011 16:52:35 +0100 Subject: [Python-es] Ejercicio Bolsas de caramelos In-Reply-To: References: Message-ID: El día 13 de enero de 2011 13:38, pixu kideak escribió: > > Me han planteado un problemilla para realizarlo con Python pero no tengo muy > claro por dónde atacar para resolverlo de manera eficiente. Sería un buen punto de partida la forma ineficiente por dos motivos: * El primero porque muestras que te has esforzado en intentarlo y tienes afán de superación en vez de más cara que espalda como muestran algunos que quieren que les hagan los deberes. > El problema es el siguiente: > "Tengo distintas bolsas de caramelos, cada bolsa digamos que tiene un > nombre; (BolsaA, BolsaB ... )y cada bolsa se compone de caramelos diferentes > (RegalizRojo, RegalizNegro, Chicle,Tiburón ...). > "El tipo de caramelo puede estar tanto en un modelo de bolsa cómo en otra" > Lo que deseo realizar es, que el usuario pueda introducir cualquier tipo de > caramelo y le muestre todas las unidades que se necesitan de ese tipo. * El segundo porque la redacción en lenguaje natural no compila en nuestras mentes. Seguramente un código ineficiente nos ayudaría a comprender el enunciado del problema. Unos tests o casos de prueba serían maravillosos. Ahora mismo las unidades que responden a la gran pregunta, creo que son 42. Lo que no se es cual es la gran pregunta de la vida, el universo y todo lo demás (incluyendo este problema ;-) Saludos: Javi From pixukideak en gmail.com Thu Jan 13 16:57:56 2011 From: pixukideak en gmail.com (pixu kideak) Date: Thu, 13 Jan 2011 16:57:56 +0100 Subject: [Python-es] Ejercicio Bolsas de caramelos In-Reply-To: References: Message-ID: Bueno pues para resolver el problema había pensado lo siguiente: Contar en memoria con todos los datos ( todas las bolsas existentes y éstas con los caramelos que contienen y sus cantidades ) Recorrer secuencialmente todas las bolsas viendo si tienen el caramelo que me interesa. En caso afirmativo contabilizar esa cantidad en el contador y así hasta recorrer todas las bolsas. Simplemente quería saber si existía alguna forma "divina" pero viendo que las Bolsas no guardan ninguna lógica en su composición; creo que toca recorrerlas todas viendo si contienen el caramelo o no :-) Saludos y gracias ;-) 2011/1/13 lasizoillo > El día 13 de enero de 2011 13:38, pixu kideak > escribió: > > > > Me han planteado un problemilla para realizarlo con Python pero no tengo > muy > > claro por dónde atacar para resolverlo de manera eficiente. > > Sería un buen punto de partida la forma ineficiente por dos motivos: > * El primero porque muestras que te has esforzado en intentarlo y > tienes afán de superación en vez de más cara que espalda como muestran > algunos que quieren que les hagan los deberes. > > > El problema es el siguiente: > > "Tengo distintas bolsas de caramelos, cada bolsa digamos que tiene un > > nombre; (BolsaA, BolsaB ... )y cada bolsa se compone de caramelos > diferentes > > (RegalizRojo, RegalizNegro, Chicle,Tiburón ...). > > "El tipo de caramelo puede estar tanto en un modelo de bolsa cómo en > otra" > > Lo que deseo realizar es, que el usuario pueda introducir cualquier tipo > de > > caramelo y le muestre todas las unidades que se necesitan de ese tipo. > > * El segundo porque la redacción en lenguaje natural no compila en > nuestras mentes. Seguramente un código ineficiente nos ayudaría a > comprender el enunciado del problema. Unos tests o casos de prueba > serían maravillosos. Ahora mismo las unidades que responden a la gran > pregunta, creo que son 42. Lo que no se es cual es la gran pregunta de > la vida, el universo y todo lo demás (incluyendo este problema ;-) > > Saludos: > > Javi > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From lowlifebob en gmail.com Thu Jan 13 17:02:04 2011 From: lowlifebob en gmail.com (lopz) Date: Thu, 13 Jan 2011 12:02:04 -0400 Subject: [Python-es] =?iso-8859-1?q?Documentaci=F3n_o_ejemplos_sobre_pycur?= =?iso-8859-1?q?l?= In-Reply-To: References: Message-ID: Hola yo para esto tiraría de httplib o en su caso urllib, urllib2, con esto tienes todo lo que necesitas para hacer lo que quieres, puedes guardar la cookie, etc Pero yo solo hacer una POST con los datos los login (previamente observo como lo hace) esto con algún proxy local, parosproxy podría ser, achiles para win y tamperdata que es una extención para FF, luego de eso es mandar los mismos datos y cojer los response y ahí tienes la cookie, que se la envías en cada requests. Saludos! El día 13 de enero de 2011 11:47, Raúl Alexis Betancor Santana escribió: > Hola a todos, > estoy intentando hacer un pequeño script-pasarela, que se conecte a un > chat web y me pase los mensajes que allí se publican a mi servidor > jabber. > La parte jabber ya la tengo terminada, ahora me falta la parte de > conexión al chat web. > La web a la que quiero conectar usa Ajax-Chat, lo cual facilita > bastante las cosas, puesto que una vez autenticado, solo tengo que > consultar una URL concreta y la respuesta es siempre un xml con los > mensajes nuevos. > El problema viene en que necesito hacer un HTTPRequest tipo POST a la > url de loging y guardar todas las cookies, para luego seguir > reenviandolas en cada petición a la url de los mensajes. > He estado mirando pycurl (con curl a pelo no consigo que me guarde las > cookies en un fichero), pero la documentación es pésima. > ¿alguien tiene algún ejemplo o sabe donde pillarlo?, buscando por > google, he encontrado varios, en todos los casos, no consigo guardar > las cookies que devuelve el site tras la autenticación correcta. > Saludos > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- lopz es libre, usa --> GNU/linux gentoo +--[RSA 2048]--+ |  ..o.o=+       | |   o =o*.+      | |  . . *oO .      | |     .EBoo      | |      o.S         | +--[lopz.org]--+ From lasizoillo en gmail.com Thu Jan 13 17:14:38 2011 From: lasizoillo en gmail.com (lasizoillo) Date: Thu, 13 Jan 2011 17:14:38 +0100 Subject: [Python-es] Ejercicio Bolsas de caramelos In-Reply-To: References: Message-ID: El día 13 de enero de 2011 16:57, pixu kideak escribió: > Bueno pues para resolver el problema había pensado lo siguiente: > Contar en memoria con todos los datos ( todas las bolsas existentes y éstas > con los caramelos que contienen y sus cantidades ) > Recorrer secuencialmente todas las bolsas viendo si tienen el caramelo que > me interesa. En caso afirmativo contabilizar esa cantidad en el contador y > así hasta recorrer todas las bolsas. > Simplemente quería saber si existía alguna forma "divina" pero viendo que > las Bolsas no guardan ninguna lógica en su composición; creo que toca > recorrerlas todas viendo si contienen el caramelo o no :-) > Saludos y gracias ;-) Vale, ahora entiendo el problema ;-) Si que hay solución y por supuesto no es nada divina. En algunos casos será mejor y en otros peor. Puedes mantener una especie de inventario de todos los caramelos. Bastaría con un diccionario en el que la clave es el caramelo y el valor el número de unidades en las bolsas registradas. Ese dato se puede ir llenando cada vez que registras una bolsa de caramelo. Pero también deberías actualizarlo al eliminar bolsas de caramelos. Por lo cual, estas haciendo más trabajo cada vez que dás de alta/baja una bolsa de caramelos y los contadores de cada tipo de caramelo ocupan espacio (no creo que importe mucho, pero hay que ser precisos). La ventaja es que se podrían hacer las consultas de los caramelos en O(1). Saludos: Javi > > 2011/1/13 lasizoillo >> >> El día 13 de enero de 2011 13:38, pixu kideak >> escribió: >> > >> > Me han planteado un problemilla para realizarlo con Python pero no tengo >> > muy >> > claro por dónde atacar para resolverlo de manera eficiente. >> >> Sería un buen punto de partida la forma ineficiente por dos motivos: >>  * El primero porque muestras que te has esforzado en intentarlo y >> tienes afán de superación en vez de más cara que espalda como muestran >> algunos que quieren que les hagan los deberes. >> >> > El problema es el siguiente: >> > "Tengo distintas bolsas de caramelos, cada bolsa digamos que tiene un >> > nombre; (BolsaA, BolsaB ... )y cada bolsa se compone de caramelos >> > diferentes >> > (RegalizRojo, RegalizNegro, Chicle,Tiburón ...). >> > "El tipo de caramelo puede estar tanto en un modelo de bolsa cómo en >> > otra" >> > Lo que deseo realizar es, que el usuario pueda introducir cualquier tipo >> > de >> > caramelo y le muestre todas las unidades que se necesitan de ese tipo. >> >>  * El segundo porque la redacción en lenguaje natural no compila en >> nuestras mentes. Seguramente un código ineficiente nos ayudaría a >> comprender el enunciado del problema. Unos tests o casos de prueba >> serían maravillosos. Ahora mismo las unidades que responden a la gran >> pregunta, creo que son 42. Lo que no se es cual es la gran pregunta de >> la vida, el universo y todo lo demás (incluyendo este problema ;-) >> >> Saludos: >> >> Javi >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > From pau.cervera en gmail.com Thu Jan 13 20:41:00 2011 From: pau.cervera en gmail.com (Pau Cervera) Date: Thu, 13 Jan 2011 20:41:00 +0100 Subject: [Python-es] Ejercicio Bolsas de caramelos In-Reply-To: References: Message-ID: Nos cuesta un poco entender la pregunta así formulada. Aunque sea sobre caramelos, la pregunta nos la tienes que dar un poco masticada. Porqué sino la respuesta podría ser difícil de digerir: class Caramelo(object): _count = {} def __new__(cls): if cls in Caramelo._count: Caramelo._count[cls] += 1 else: Caramelo._count[cls] = 1 return object.__new__(cls) @classmethod def count(cls): if cls in Caramelo._count: return Caramelo._count[cls] else: return 0 def __mul__(self, other): Caramelo._count[self.__class__] += other - 1 return self def __rmul__(self, other): return self.__mul__(other) def __lmul__(self, other): return self.__mul__(other) class RegalizRojo(Caramelo): pass class RegalizNegro(Caramelo): pass bolsa_a = [RegalizRojo(), RegalizRojo(), 2 * RegalizNegro()] bolsa_b = [4 * RegalizRojo(), RegalizNegro()] print RegalizRojo.count(), RegalizNegro.count() ----- Pau Python..., what else? 2011/1/13 lasizoillo > El día 13 de enero de 2011 16:57, pixu kideak > escribió: > > Bueno pues para resolver el problema había pensado lo siguiente: > > Contar en memoria con todos los datos ( todas las bolsas existentes y > éstas > > con los caramelos que contienen y sus cantidades ) > > Recorrer secuencialmente todas las bolsas viendo si tienen el caramelo > que > > me interesa. En caso afirmativo contabilizar esa cantidad en el contador > y > > así hasta recorrer todas las bolsas. > > Simplemente quería saber si existía alguna forma "divina" pero viendo que > > las Bolsas no guardan ninguna lógica en su composición; creo que toca > > recorrerlas todas viendo si contienen el caramelo o no :-) > > Saludos y gracias ;-) > > Vale, ahora entiendo el problema ;-) > > Si que hay solución y por supuesto no es nada divina. En algunos casos > será mejor y en otros peor. Puedes mantener una especie de inventario > de todos los caramelos. Bastaría con un diccionario en el que la clave > es el caramelo y el valor el número de unidades en las bolsas > registradas. > > Ese dato se puede ir llenando cada vez que registras una bolsa de > caramelo. Pero también deberías actualizarlo al eliminar bolsas de > caramelos. Por lo cual, estas haciendo más trabajo cada vez que dás de > alta/baja una bolsa de caramelos y los contadores de cada tipo de > caramelo ocupan espacio (no creo que importe mucho, pero hay que ser > precisos). La ventaja es que se podrían hacer las consultas de los > caramelos en O(1). > > Saludos: > > Javi > > > > > 2011/1/13 lasizoillo > >> > >> El día 13 de enero de 2011 13:38, pixu kideak > >> escribió: > >> > > >> > Me han planteado un problemilla para realizarlo con Python pero no > tengo > >> > muy > >> > claro por dónde atacar para resolverlo de manera eficiente. > >> > >> Sería un buen punto de partida la forma ineficiente por dos motivos: > >> * El primero porque muestras que te has esforzado en intentarlo y > >> tienes afán de superación en vez de más cara que espalda como muestran > >> algunos que quieren que les hagan los deberes. > >> > >> > El problema es el siguiente: > >> > "Tengo distintas bolsas de caramelos, cada bolsa digamos que tiene un > >> > nombre; (BolsaA, BolsaB ... )y cada bolsa se compone de caramelos > >> > diferentes > >> > (RegalizRojo, RegalizNegro, Chicle,Tiburón ...). > >> > "El tipo de caramelo puede estar tanto en un modelo de bolsa cómo en > >> > otra" > >> > Lo que deseo realizar es, que el usuario pueda introducir cualquier > tipo > >> > de > >> > caramelo y le muestre todas las unidades que se necesitan de ese tipo. > >> > >> * El segundo porque la redacción en lenguaje natural no compila en > >> nuestras mentes. Seguramente un código ineficiente nos ayudaría a > >> comprender el enunciado del problema. Unos tests o casos de prueba > >> serían maravillosos. Ahora mismo las unidades que responden a la gran > >> pregunta, creo que son 42. Lo que no se es cual es la gran pregunta de > >> la vida, el universo y todo lo demás (incluyendo este problema ;-) > >> > >> Saludos: > >> > >> Javi > >> _______________________________________________ > >> Python-es mailing list > >> Python-es en python.org > >> http://mail.python.org/mailman/listinfo/python-es > >> FAQ: http://python-es-faq.wikidot.com/ > > > > > > _______________________________________________ > > Python-es mailing list > > Python-es en python.org > > http://mail.python.org/mailman/listinfo/python-es > > FAQ: http://python-es-faq.wikidot.com/ > > > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From eventgrafic en gmail.com Thu Jan 13 21:06:47 2011 From: eventgrafic en gmail.com (Eduard Diaz) Date: Thu, 13 Jan 2011 21:06:47 +0100 Subject: [Python-es] =?iso-8859-1?q?Documentaci=F3n_o_ejemplos_sobre_pycur?= =?iso-8859-1?q?l?= In-Reply-To: References: Message-ID: Hola Suena interesante, estaría bien darle un vistazo :D La documentación para saber como utilizarlo es a partir de la de curl y sobretodo libcurl http://curl.haxx.se/docs/manual.html http://curl.haxx.se/libcurl/c/libcurl-tutorial.html Las opciones disponibles las puedes ver en: http://curl.haxx.se/libcurl/c/curl_easy_setopt.html (supongo que tendrías que mirar el código de pycurl por si hay alguna no implementada, yo no lo he mirado) un ejemplo (con json, no xml) de como loginarte con cookies seria: import os.path import time import pycurl import urllib import StringIO url = 'http://localhost/login/' cookie_file = os.path.join('tu_ruta', 'cookies.txt') data = urllib.urlencode({ 'username': 'usuario', 'password': 'elquesea' }) output = StringIO.StringIO() header = StringIO.StringIO() # creas el objeto c = pycurl.Curl() # le pones las opciones que necesites (ver el manual, sobretodo de libcurl) c.setopt(pycurl.URL, url) c.setopt(pycurl.VERBOSE, 1) c.setopt(pycurl.HTTPHEADER, [ "X-Requested-With:XMLHttpRequest", "Accept: aplication/json"]) c.setopt(pycurl.POSTFIELDS, data) c.setopt(pycurl.COOKIEFILE, cookie_file) c.setopt(pycurl.WRITEFUNCTION, output.write) c.setopt(pycurl.HEADERFUNCTION, header.write) # llamas a la url c.perform() # Compruebas cabeceras y lo que necesites print '-'*10 print "URL ", c.getinfo(pycurl.EFFECTIVE_URL) print "HTTP-code:", c.getinfo(c.HTTP_CODE) print "Total-time:", c.getinfo(c.TOTAL_TIME) print "Download speed: %.2f bytes/second" % c.getinfo(c.SPEED_DOWNLOAD) print "Document size: %d bytes" % c.getinfo(c.SIZE_DOWNLOAD) print "Effective URL:", c.getinfo(c.EFFECTIVE_URL) print "Content-type:", c.getinfo(c.CONTENT_TYPE) print "Namelookup-time:", c.getinfo(c.NAMELOOKUP_TIME) print "Redirect-time:", c.getinfo(c.REDIRECT_TIME) print "Redirect-count:", c.getinfo(c.REDIRECT_COUNT) epoch = c.getinfo(c.INFO_FILETIME) print "Filetime: %d (%s)" % (epoch, time.ctime(epoch)) print '-'*10 # Siempre va bien leer el header a pelo print header.getvalue() #Y por ultimo la respuesta guardada en la variable output value = output.getvalue() if value.strip(): print value c.close() Eso es todo, aunque hay que tener en cuenta el csrftoken, https y el resto de medidas de seguridad que tenga el webchat en cuestión Ya nos contaras como te va!! Un saludo -- ////////////////////////////////////////////////////////////////////////// Eduard Díaz www.scopia.es SCOPIA VISUAL INTERFACES SYSTEMS S.L. Barcelona Tel. 625 055 126, 933 171 771 ////////////////////////////////////////////////////////////////////////// El 13 de enero de 2011 16:47, Raúl Alexis Betancor Santana < rbetancor en gmail.com> escribió: > Hola a todos, > > estoy intentando hacer un pequeño script-pasarela, que se conecte a un > chat web y me pase los mensajes que allí se publican a mi servidor > jabber. > > La parte jabber ya la tengo terminada, ahora me falta la parte de > conexión al chat web. > > La web a la que quiero conectar usa Ajax-Chat, lo cual facilita > bastante las cosas, puesto que una vez autenticado, solo tengo que > consultar una URL concreta y la respuesta es siempre un xml con los > mensajes nuevos. > > El problema viene en que necesito hacer un HTTPRequest tipo POST a la > url de loging y guardar todas las cookies, para luego seguir > reenviandolas en cada petición a la url de los mensajes. > > He estado mirando pycurl (con curl a pelo no consigo que me guarde las > cookies en un fichero), pero la documentación es pésima. > > ¿alguien tiene algún ejemplo o sabe donde pillarlo?, buscando por > google, he encontrado varios, en todos los casos, no consigo guardar > las cookies que devuelve el site tras la autenticación correcta. > > Saludos > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From eventgrafic en gmail.com Thu Jan 13 21:31:21 2011 From: eventgrafic en gmail.com (Eduard Diaz) Date: Thu, 13 Jan 2011 21:31:21 +0100 Subject: [Python-es] Ejercicio Bolsas de caramelos In-Reply-To: References: Message-ID: > El problema es el siguiente: > "Tengo distintas bolsas de caramelos, cada bolsa digamos que tiene un > nombre; (BolsaA, BolsaB ... )y cada bolsa se compone de caramelos diferentes > (RegalizRojo, RegalizNegro, Chicle,Tiburón ...). > "El tipo de caramelo puede estar tanto en un modelo de bolsa cómo en otra" > Lo que deseo realizar es, que el usuario pueda introducir cualquier tipo de > caramelo y le muestre todas las unidades que se necesitan de ese tipo. Joder, hay que tener cara para no tener ni la mas mínima consideración para escribir una linea de código. Eso suena a ejercicio de clase pasteado a pelo Pero como estoy con ganas de reirme... la respuesta tonta en lenguaje natural es: Creas un diccionario que tenga unas claves como bolsas y como valor un diccionario pegajoso de tipos de caramelos que tenga valores enteros. Ojo el valor inicial siempre será cero. Cuando quieras meter algo en la bolsa le sumas uno al tipo de caramelo del diccionario de tipos de caramelos de la bolsa en cuestión (perogrullo) Cuando quieras saber lo que falta solo tienes leer el valor de la tipo de caramelo de la bolsa y restarlo del máximo de caramelos que puedas tener para ese tipo de caramelos de ese tipo de bolsa, valor que también se puede guardar en el diccionario de tipos de caramelos de las bolsas Con eso se cumplen tus requisitos Ahora te falta programarlo, aunque es muy fácil Un saludo ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From pixukideak en gmail.com Thu Jan 13 21:39:29 2011 From: pixukideak en gmail.com (pixu kideak) Date: Thu, 13 Jan 2011 21:39:29 +0100 Subject: [Python-es] Ejercicio Bolsas de caramelos In-Reply-To: References: Message-ID: 2011/1/13 Eduard Diaz > > El problema es el siguiente: > > "Tengo distintas bolsas de caramelos, cada bolsa digamos que tiene un > > nombre; (BolsaA, BolsaB ... )y cada bolsa se compone de caramelos > diferentes > > (RegalizRojo, RegalizNegro, Chicle,Tiburón ...). > > "El tipo de caramelo puede estar tanto en un modelo de bolsa cómo en > otra" > > Lo que deseo realizar es, que el usuario pueda introducir cualquier tipo > de > > caramelo y le muestre todas las unidades que se necesitan de ese tipo. > > Joder, hay que tener cara para no tener ni la mas mínima consideración para > escribir una linea de código. > > Eso suena a ejercicio de clase pasteado a pelo > > Pero como estoy con ganas de reirme... > > la respuesta tonta en lenguaje natural es: > > Creas un diccionario que tenga unas claves como bolsas y como valor un > diccionario pegajoso de tipos de caramelos que tenga valores enteros. Ojo el > valor inicial siempre será cero. > > Cuando quieras meter algo en la bolsa le sumas uno al tipo de caramelo del > diccionario de tipos de caramelos de la bolsa en cuestión (perogrullo) > > Cuando quieras saber lo que falta solo tienes leer el valor de la tipo de > caramelo de la bolsa y restarlo del máximo de caramelos que puedas tener > para ese tipo de caramelos de ese tipo de bolsa, valor que también se puede > guardar en el diccionario de tipos de caramelos de las bolsas > > Con eso se cumplen tus requisitos > > Ahora te falta programarlo, aunque es muy fácil > > > Un saludo > Gracias, era más o menos lo que buscaba. De hecho no quería ver líneas de código; sino tener "la idea". > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From pepe en diselpro.com Fri Jan 14 01:10:11 2011 From: pepe en diselpro.com (Pepe Aracil) Date: Fri, 14 Jan 2011 01:10:11 +0100 Subject: [Python-es] Ctypes Message-ID: Para esos pequeños (y molestos) torcitos de código que hay que escribir en C ;-P Linux: http://fsckd.com/2009/4/25/simple-python-ctypes-example Windows: http://www.lejordet.com/2009/04/simple-python-ctypes-example-in-windows/ Si hay que convertir un ".h" parcial o entero: http://starship.python.net/crew/theller/ctypes/old/codegen.html Salud. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From ricardo.cardenes en gmail.com Fri Jan 14 02:57:58 2011 From: ricardo.cardenes en gmail.com (=?ISO-8859-1?Q?Ricardo_C=E1rdenes_Medina?=) Date: Fri, 14 Jan 2011 01:57:58 +0000 Subject: [Python-es] Ejercicio Bolsas de caramelos In-Reply-To: References: Message-ID: 2011/1/13 pixu kideak : [...] > Gracias, era más o menos lo que buscaba. De hecho no quería ver líneas de > código; sino tener "la idea". Jo, pues menos mal... Después de haber leído todo el hilo sigo sin saber qué es lo que querías. Creo que si tenemos que votar por "pregunta peor planteada en la historia de la lista", ésta sería candidata al premio. Sobre todo por la cantidad de información que nos has ido proporcionando... De todas maneras, diré que si tu problema era éste: "dada una serie X de caramelos diferentes y una serie Y de diferentes tipos de bolsas de caramelos, cada una con caramelos de cada tipo y, sabiendo que disponemos de bolsas de cada tipo, ¿cuántos caramelos tendremos que pedir para rellenarlas?", creo que la solución es mucho más sencilla que lo de los diccionarios... From lesthack en gmail.com Fri Jan 14 05:36:20 2011 From: lesthack en gmail.com (Jorge Luis Hernandez) Date: Thu, 13 Jan 2011 22:36:20 -0600 Subject: [Python-es] Ejercicio Bolsas de caramelos In-Reply-To: References: Message-ID: <1294979780.2794.3.camel@gabrielle> El vie, 14-01-2011 a las 01:57 +0000, Ricardo Cárdenes Medina escribió: > Creo que si tenemos que votar por > "pregunta peor planteada en la historia de la lista", ésta sería > candidata al premio. Sobre todo por la cantidad de información que nos > has ido proporcionando... Venga, que yo tambien me he leido todo el hilo, y concuerdo contigo, el problema esta muy mal planteado. En fin, la lista es para tópicos de python. Saludos !! -- ________________________________________________________ ISC. Jorge Luis Hernández C. Desarrollador de Software y Tecnologías Libres Usuario GNU/Linux Debian http://lesthack.com.mx @lesthack ________________________________________________________ ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 198 bytes Desc: This is a digitally signed message part URL: From euribates en gmail.com Fri Jan 14 11:52:43 2011 From: euribates en gmail.com (Juan Ignacio) Date: Fri, 14 Jan 2011 10:52:43 +0000 Subject: [Python-es] Ejercicio Bolsas de caramelos In-Reply-To: <1294979780.2794.3.camel@gabrielle> References: <1294979780.2794.3.camel@gabrielle> Message-ID: A mi me parece un problema apropiado para hacerlo como consulta SQL. Pero como también me parece un intento de que le hagamos la tarea (opinión que estoy dispuesto a modificar si me dan razones para ello) he guardado un respetuoso silencio, cual oveja de Mastropiero. 2011/1/14 Jorge Luis Hernandez : > El vie, 14-01-2011 a las 01:57 +0000, Ricardo Cárdenes Medina escribió: >> Creo que si tenemos que votar por >> "pregunta peor planteada en la historia de la lista", ésta sería >> candidata al premio. Sobre todo por la cantidad de información que nos >> has ido proporcionando... From bertothunder en gmail.com Fri Jan 14 12:01:42 2011 From: bertothunder en gmail.com (Alberto Curro) Date: Fri, 14 Jan 2011 12:01:42 +0100 Subject: [Python-es] Ejercicio Bolsas de caramelos In-Reply-To: References: <1294979780.2794.3.camel@gabrielle> Message-ID: Precisamente por esto mismo yo me he callado y no ha salido ni esta boca es mía... El 14 de enero de 2011 11:52, Juan Ignacio escribió: > A mi me parece un problema apropiado para hacerlo como consulta SQL. > > Pero como también me parece un intento de que le hagamos la tarea > (opinión que estoy dispuesto a modificar si me dan razones para ello) > he guardado un respetuoso silencio, cual oveja de Mastropiero. > > 2011/1/14 Jorge Luis Hernandez : > > El vie, 14-01-2011 a las 01:57 +0000, Ricardo Cárdenes Medina escribió: > >> Creo que si tenemos que votar por > >> "pregunta peor planteada en la historia de la lista", ésta sería > >> candidata al premio. Sobre todo por la cantidad de información que nos > >> has ido proporcionando... > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From rbetancor en gmail.com Sat Jan 15 01:22:35 2011 From: rbetancor en gmail.com (=?ISO-8859-1?Q?Ra=FAl_Alexis_Betancor_Santana?=) Date: Sat, 15 Jan 2011 00:22:35 +0000 Subject: [Python-es] pycurl y contenidos en UTF-8 Message-ID: Buenas a todos. Gracias a los links que me posteraron como respuesta a mi consulta sobre documentación de pycurl ... he podido hacer lo que quería, conectarme al web-chat ajax del site y poder descargar los mensajes. Ahora se plantea un problema que me tiene hablando solo toda la tarde y al que no le encuentro solución. Cuando hago la llamada a curl para que descarge los mensajes, el site me devuelve un xml con los mensajes he información extra. import os.path import time import pycurl import urllib import StringIO import codecs [...] output = StringIO.StringIO() header = StringIO.StringIO() [...] c.setopt(pycurl.WRITEFUNCTION, output.write) c.setopt(pycurl.HEADERFUNCTION, header.write) [...] # llamas a la url c.perform() [...] xml = output.getvalue() Bien .. a partir de aquí empiezan los problemas ... si intento grabar el contenido a un fichero .xml para luego procesarlo con otra script python, lo hago así: f = open('salida.xml','wb') value = output.getvalue().decode('utf-8') if value.strip(): f.write(value.encode('utf-8')) f.close() ... El problema es que el fichero salida.xml, cuando lo voy a procesar con el otro script python, que usa lxml ... se queja de los caracteres "especiales", que está codificados en UTF-8 (o deberían) ... no son válidos. He probado de esta otra manera: f = codecs.open('salida','wb','utf-8') #Y por ultimo la respuesta guardada en la variable output value = output.getvalue() if value.strip(): f.write(value) f.close() c.close() Y no hay forma ... luego al intentar procesarlo con lxml se queja de errores relacionados con la codificación. La pregunta es como lidiar con esta situación ¿? ... como respuesta a la petición de pycurl, objeto un XML que está codificado en UTF-8 ..., necesito grabarlo correctamente para poder procesarlo luego, ¿que estoy haciendo mal? Saludos ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From morillas en gmail.com Sat Jan 15 08:05:32 2011 From: morillas en gmail.com (Luis Miguel Morillas) Date: Sat, 15 Jan 2011 08:05:32 +0100 Subject: [Python-es] pycurl y contenidos en UTF-8 In-Reply-To: References: Message-ID: El día 15 de enero de 2011 01:22, Raúl Alexis Betancor Santana escribió: > Buenas a todos. > Gracias a los links que me posteraron como respuesta a mi consulta sobre > documentación de pycurl ... he podido hacer lo que quería, conectarme al > web-chat ajax del site y poder descargar los mensajes. > Ahora se plantea un problema que me tiene hablando solo toda la tarde y al > que no le encuentro solución. > Cuando hago la llamada a curl para que descarge los mensajes, el site me > devuelve un xml con los mensajes he información extra. > import os.path > import time > import pycurl > import urllib > import StringIO > import codecs > [...] > output = StringIO.StringIO() > header = StringIO.StringIO() > [...] > c.setopt(pycurl.WRITEFUNCTION, output.write) > c.setopt(pycurl.HEADERFUNCTION, header.write) > [...] > # llamas a la url > c.perform() > [...] > xml = output.getvalue() > Bien .. a partir de aquí empiezan los problemas ... si intento grabar el > contenido a un fichero .xml para luego procesarlo con otra script python, lo > hago así: > f = open('salida.xml','wb') > value = output.getvalue().decode('utf-8') > if value.strip(): >         f.write(value.encode('utf-8')) > f.close() > ... > El problema es que el fichero salida.xml, cuando lo voy a procesar con el > otro script python, que usa lxml ... se queja de los caracteres > "especiales", que está codificados en UTF-8 (o deberían) ... no son válidos. > He probado de esta otra manera: > f = codecs.open('salida','wb','utf-8') > #Y por ultimo la respuesta guardada en la variable output > value = output.getvalue() > if value.strip(): >         f.write(value) > f.close() > c.close() > Y no hay forma ... luego al intentar procesarlo con lxml se queja de errores > relacionados con la codificación. ¿Qué error da? ¿Dónde? ¿Qué hace el script? Los objetos xml por defecto están codificados siempre en utf-8. -- lm > La pregunta es como lidiar con esta situación ¿? ... como respuesta a la > petición de pycurl, objeto un XML que está codificado en UTF-8 ..., necesito > grabarlo correctamente para poder procesarlo luego, ¿que estoy haciendo mal? > Saludos > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > From rbetancor en gmail.com Sat Jan 15 12:28:36 2011 From: rbetancor en gmail.com (=?ISO-8859-1?Q?Ra=FAl_Alexis_Betancor_Santana?=) Date: Sat, 15 Jan 2011 11:28:36 +0000 Subject: [Python-es] pycurl y contenidos en UTF-8 In-Reply-To: References: Message-ID: El 15 de enero de 2011 07:05, Luis Miguel Morillas escribió: ¿Qué error da? ¿Dónde? ¿Qué hace el script? Los objetos xml por > defecto están codificados siempre en utf-8. > Olvidalo, repasando el xml a de resultado a mano, me he encontrado el fallo, el problema real, es que después de una primera llamada con pycurl, cuando autentica, ya me devuelve un xml con ciertos datos, que al hacer la segunda llamada para obtener los mensajes, se concatena con el xml de los mensajes (ya que el no he "vaciado" el StringIO) ... y eso es lo que causaba problemas al parsear luego el resultado, que había 2 declaraciones de en la cadena. No lo había visto, porque el fichero que devuelve es de unos 10Mg ... y no lo había revisado completo .. XDD Perdón, no tenía nada que ver con la codificación. Saludos y gracias a todos. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From algg78 en telefonica.net Sun Jan 16 09:59:44 2011 From: algg78 en telefonica.net (=?ISO-8859-1?Q?=C1ngel_Luis_Garc=EDa_Garc=EDa?=) Date: Sun, 16 Jan 2011 09:59:44 +0100 Subject: [Python-es] =?iso-8859-1?q?B=FAsqueda_de_redactores_de_art=EDculo?= =?iso-8859-1?q?s_para_revista_PET_=28PyAr=29?= In-Reply-To: References: Message-ID: Hola, buenos días. Os escribo este correo para comunicaros que estoy buscando a personas que quieran escribir artículos sobre Python y afines en la revista PET (Python entre todos), la revista de la comunidad PyAr (Argentina). Los artículos tienen que ser novedosos fundamentalmente. El mecanismo es el siguiente. Los que quieran embarcarse en esta aventura únicamente tenéis que enviar el ó los artículos que escribáis a este correo (angelluis78 en gmail.com). A continuación, yo los enviaré a la gente de PyAr, tal como he hablado con ellos. Recordad, lo más importante es que dichos artículos sean actuales, novedosos, ya que de todos los que se envíen se hará una selección. Muchas gracias por vuestro tiempo. Un cordial saludo. Ángel Luis García García http://elviajedelnavegante.blogspot.com ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From jcaballero.hep en gmail.com Sun Jan 16 18:42:18 2011 From: jcaballero.hep en gmail.com (Jose Caballero) Date: Sun, 16 Jan 2011 12:42:18 -0500 Subject: [Python-es] =?iso-8859-1?q?B=FAsqueda_de_redactores_de_art=EDculo?= =?iso-8859-1?q?s_para_revista_PET_=28PyAr=29?= In-Reply-To: References: Message-ID: > Recordad, lo más importante es que dichos artículos sean actuales, > novedosos, ya que de todos los que se envíen se hará una selección. > > Hola Ángel Luis, ¿Podrías explicarnos un poco mejor que se entiende por "actuales y novedosos"? Se puede interpretar de múltiples maneras. Quizás ejemplos de qué es y qué no es "actual y novedoso" podría ayudar a entender mejor los que buscáis. ¿Valen traducciones al español de artículos "actuales y novedosos" escritos en inglés? ¿Podría crear demasiados problemas con derechos de autor? Por cierto, me gustó bastante el número 1, y esperaba ansioso el 2. Saludos, Jose ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From fernandoenzo en gmail.com Tue Jan 18 16:54:40 2011 From: fernandoenzo en gmail.com (Fernando Guarini) Date: Tue, 18 Jan 2011 16:54:40 +0100 Subject: [Python-es] =?iso-8859-1?q?Problema_con_la_codificaci=F3n?= Message-ID: Buenas a todos, Recientemente he creado un programa en Python que se ejecuta en terminal. Lo creé bajo Linux, y en la cabecera de cada archivo .py que tengo creado, tengo escrito: #encoding:UTF-8 Así me detecta todos los caracteres, véase tildes, eñes, y lo que sea. Bueno, todo iba genial bajo Linux hasta que hoy me ha dado por probar el invento en Windows. He descargado pues el intérprete de la página oficial, que es el 2.7, y simplemente he ejecutado mi programa. Las funciones van perfectamente, pero los caracteres no, y me lo muestra todo de una forma bastante horrible. Como os podreis imaginar, ni una sola tilde se ve correctamente, sino que en su lugar me la sustituye por símbolos muy raros. A ver si os ha pasado a alguno de vosotros y me podeis decir cómo solucionarlo. Muchas Gracias!! ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From fcocuadrado en gmail.com Tue Jan 18 17:05:49 2011 From: fcocuadrado en gmail.com (Francisco Javier Cuadrado) Date: Tue, 18 Jan 2011 17:05:49 +0100 Subject: [Python-es] =?utf-8?q?Problema_con_la_codificaci=C3=B3n?= In-Reply-To: References: Message-ID: El día 18 de enero de 2011 16:54, Fernando Guarini escribió: > Buenas a todos, > Recientemente he creado un programa en Python que se ejecuta en terminal. Lo > creé bajo Linux, y en la cabecera de cada archivo .py que tengo creado, > tengo escrito: > #encoding:UTF-8 Antes de nada el comentario es: # coding: utf-8 http://www.python.org/dev/peps/pep-0263/ > Así me detecta todos los caracteres, véase tildes, eñes, y lo que sea. > Bueno, todo iba genial bajo Linux hasta que hoy me ha dado por probar el > invento en Windows. He descargado pues el intérprete de la página oficial, > que es el 2.7, y simplemente he ejecutado mi programa. Las funciones van > perfectamente, pero los caracteres no, y me lo muestra todo de una forma > bastante horrible. Como os podreis imaginar, ni una sola tilde se ve > correctamente, sino que en su lugar me la sustituye por símbolos muy raros. > A ver si os ha pasado a alguno de vosotros y me podeis decir cómo > solucionarlo. Aquí ya no te puedo ayudar, creo que no he programado en Python sobre windows nunca, si no es por lo que te he dicho antes, quizá sea culpa de la consola de Windows que no sepa utilizar UTF-8. > Muchas Gracias!! > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- Saludos Fran From ivanparedes84 en gmail.com Tue Jan 18 17:08:13 2011 From: ivanparedes84 en gmail.com (Ivan Paredes) Date: Tue, 18 Jan 2011 11:08:13 -0500 Subject: [Python-es] =?utf-8?q?Problema_con_la_codificaci=C3=B3n?= In-Reply-To: References: Message-ID: Al parecer windows no usa UTF si no ISO prueba quitando esa linea El 18 de enero de 2011 11:05, Francisco Javier Cuadrado < fcocuadrado en gmail.com> escribió: > El día 18 de enero de 2011 16:54, Fernando Guarini > escribió: > > Buenas a todos, > > Recientemente he creado un programa en Python que se ejecuta en terminal. > Lo > > creé bajo Linux, y en la cabecera de cada archivo .py que tengo creado, > > tengo escrito: > > #encoding:UTF-8 > > Antes de nada el comentario es: > > # coding: utf-8 > > http://www.python.org/dev/peps/pep-0263/ > > > Así me detecta todos los caracteres, véase tildes, eñes, y lo que sea. > > Bueno, todo iba genial bajo Linux hasta que hoy me ha dado por probar el > > invento en Windows. He descargado pues el intérprete de la página > oficial, > > que es el 2.7, y simplemente he ejecutado mi programa. Las funciones van > > perfectamente, pero los caracteres no, y me lo muestra todo de una forma > > bastante horrible. Como os podreis imaginar, ni una sola tilde se ve > > correctamente, sino que en su lugar me la sustituye por símbolos muy > raros. > > A ver si os ha pasado a alguno de vosotros y me podeis decir cómo > > solucionarlo. > > Aquí ya no te puedo ayudar, creo que no he programado en Python sobre > windows nunca, si no es por lo que te he dicho antes, quizá sea culpa > de la consola de Windows que no sepa utilizar UTF-8. > > > Muchas Gracias!! > > _______________________________________________ > > Python-es mailing list > > Python-es en python.org > > http://mail.python.org/mailman/listinfo/python-es > > FAQ: http://python-es-faq.wikidot.com/ > > > > > > > > -- > Saludos > > Fran > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From davidmenhur en gmail.com Tue Jan 18 17:22:18 2011 From: davidmenhur en gmail.com (=?UTF-8?B?RGHPgGlk?=) Date: Tue, 18 Jan 2011 17:22:18 +0100 Subject: [Python-es] =?iso-8859-1?q?Problema_con_la_codificaci=F3n?= In-Reply-To: References: Message-ID: Si se la quitas te va a petar porque tienes caracteres extraños. En Windows XP, la codificación se declara con: # -*- coding: 850 -*- Sin embargo, si lo quieres ejecutar desde la consola del IDLE, debería ser: # -*- coding: cp1252 -*- 2011/1/18 Ivan Paredes : > Al parecer windows no usa UTF si no ISO prueba quitando esa linea > > El 18 de enero de 2011 11:05, Francisco Javier Cuadrado > escribió: >> >> El día 18 de enero de 2011 16:54, Fernando Guarini >> escribió: >> > Buenas a todos, >> > Recientemente he creado un programa en Python que se ejecuta en >> > terminal. Lo >> > creé bajo Linux, y en la cabecera de cada archivo .py que tengo creado, >> > tengo escrito: >> > #encoding:UTF-8 >> >> Antes de nada el comentario es: >> >> # coding: utf-8 >> >> http://www.python.org/dev/peps/pep-0263/ >> >> > Así me detecta todos los caracteres, véase tildes, eñes, y lo que sea. >> > Bueno, todo iba genial bajo Linux hasta que hoy me ha dado por probar el >> > invento en Windows. He descargado pues el intérprete de la página >> > oficial, >> > que es el 2.7, y simplemente he ejecutado mi programa. Las funciones van >> > perfectamente, pero los caracteres no, y me lo muestra todo de una forma >> > bastante horrible. Como os podreis imaginar, ni una sola tilde se ve >> > correctamente, sino que en su lugar me la sustituye por símbolos muy >> > raros. >> > A ver si os ha pasado a alguno de vosotros y me podeis decir cómo >> > solucionarlo. >> >> Aquí ya no te puedo ayudar, creo que no he programado en Python sobre >> windows nunca, si no es por lo que te he dicho antes, quizá sea culpa >> de la consola de Windows que no sepa utilizar UTF-8. >> >> > Muchas Gracias!! >> > _______________________________________________ >> > Python-es mailing list >> > Python-es en python.org >> > http://mail.python.org/mailman/listinfo/python-es >> > FAQ: http://python-es-faq.wikidot.com/ >> > >> > >> >> >> >> -- >> Saludos >> >> Fran >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > From gerardojuarez en buyteknet.info Tue Jan 18 17:53:36 2011 From: gerardojuarez en buyteknet.info (gerardo Juarez) Date: Tue, 18 Jan 2011 10:53:36 -0600 Subject: [Python-es] =?iso-8859-1?q?Problema_con_la_codificaci=F3n?= In-Reply-To: References: Message-ID: <4D35C590.7070304@buyteknet.info> Y además debe ir en la línea 1 o 2 del fuente. Por ejemplo, si tienes como aquí abajo, no tiene por qué funcionar, de acuerdo al PEP que citó más abajo Francisco. Yo no he tenido problema con Windows a la fecha y he declarado la codificación en línea 2 como abajo sin problema. #!/usr/bin/python <--- línea en blanco #-*- coding: utf-8 -*- saludos Gerardo Da?id wrote: > Si se la quitas te va a petar porque tienes caracteres extraños. En > Windows XP, la codificación se declara con: > > # -*- coding: 850 -*- > > Sin embargo, si lo quieres ejecutar desde la consola del IDLE, debería ser: > > # -*- coding: cp1252 -*- > > 2011/1/18 Ivan Paredes : > >> Al parecer windows no usa UTF si no ISO prueba quitando esa linea >> >> El 18 de enero de 2011 11:05, Francisco Javier Cuadrado >> escribió: >> >>> El día 18 de enero de 2011 16:54, Fernando Guarini >>> escribió: >>> >>>> Buenas a todos, >>>> Recientemente he creado un programa en Python que se ejecuta en >>>> terminal. Lo >>>> creé bajo Linux, y en la cabecera de cada archivo .py que tengo creado, >>>> tengo escrito: >>>> #encoding:UTF-8 >>>> >>> Antes de nada el comentario es: >>> >>> # coding: utf-8 >>> >>> http://www.python.org/dev/peps/pep-0263/ >>> >>> >>>> Así me detecta todos los caracteres, véase tildes, eñes, y lo que sea. >>>> Bueno, todo iba genial bajo Linux hasta que hoy me ha dado por probar el >>>> invento en Windows. He descargado pues el intérprete de la página >>>> oficial, >>>> que es el 2.7, y simplemente he ejecutado mi programa. Las funciones van >>>> perfectamente, pero los caracteres no, y me lo muestra todo de una forma >>>> bastante horrible. Como os podreis imaginar, ni una sola tilde se ve >>>> correctamente, sino que en su lugar me la sustituye por símbolos muy >>>> raros. >>>> A ver si os ha pasado a alguno de vosotros y me podeis decir cómo >>>> solucionarlo. >>>> >>> Aquí ya no te puedo ayudar, creo que no he programado en Python sobre >>> windows nunca, si no es por lo que te he dicho antes, quizá sea culpa >>> de la consola de Windows que no sepa utilizar UTF-8. >>> >>> >>>> Muchas Gracias!! >>>> _______________________________________________ >>>> Python-es mailing list >>>> Python-es en python.org >>>> http://mail.python.org/mailman/listinfo/python-es >>>> FAQ: http://python-es-faq.wikidot.com/ >>>> >>>> >>>> >>> >>> -- >>> Saludos >>> >>> Fran >>> _______________________________________________ >>> Python-es mailing list >>> Python-es en python.org >>> http://mail.python.org/mailman/listinfo/python-es >>> FAQ: http://python-es-faq.wikidot.com/ >>> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> >> > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > From ricardo.cardenes en gmail.com Tue Jan 18 18:36:58 2011 From: ricardo.cardenes en gmail.com (=?ISO-8859-1?Q?Ricardo_C=E1rdenes_Medina?=) Date: Tue, 18 Jan 2011 17:36:58 +0000 Subject: [Python-es] =?iso-8859-1?q?Problema_con_la_codificaci=F3n?= In-Reply-To: References: Message-ID: 2011/1/18 Francisco Javier Cuadrado : >> #encoding:UTF-8 > > Antes de nada el comentario es: > > # coding: utf-8 Cierto, pero "encoding" funciona igual de bien, aunque lo otro sea más correcto. Su problema es que este comentario sólo sirve para indicarle al intérprete de Python en qué codificación está el FICHERO FUENTE (para poder interpretar cadenas de texto correctamente, etc), pero NO define la codificación de la E/S. From andsux en gmail.com Tue Jan 18 20:17:07 2011 From: andsux en gmail.com (Andrey Antoukh) Date: Tue, 18 Jan 2011 20:17:07 +0100 Subject: [Python-es] =?utf-8?q?Problema_con_la_codificaci=C3=B3n?= In-Reply-To: References: Message-ID: También muchos usan : # -*- coding: urf-8 -*- http://www.python.org/dev/peps/pep-0263/ El día 18 de enero de 2011 18:36, Ricardo Cárdenes Medina escribió: > 2011/1/18 Francisco Javier Cuadrado : > >>> #encoding:UTF-8 >> >> Antes de nada el comentario es: >> >> # coding: utf-8 > > Cierto, pero "encoding" funciona igual de bien, aunque lo otro sea más correcto. > > Su problema es que este comentario sólo sirve para indicarle al > intérprete de Python en qué codificación está el FICHERO FUENTE (para > poder interpretar cadenas de texto correctamente, etc), pero NO define > la codificación de la E/S. > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > -- http://twitter.com/andsux http://www.niwi.be **** http://www.freebsd.org/ http://www.postgresql.org/ http://www.python.org/ http://www.djangoproject.com/ "Linux is for people who hate Windows, BSD is for people who love UNIX" "Social Engineer -> Because there is no patch for human stupidity" From listas en soft-com.es Tue Jan 18 20:16:43 2011 From: listas en soft-com.es (=?ISO-8859-1?Q?Oswaldo_Hern=E1ndez?=) Date: Tue, 18 Jan 2011 20:16:43 +0100 Subject: [Python-es] =?iso-8859-1?q?Problema_con_la_codificaci=F3n?= In-Reply-To: References: Message-ID: <4D35E71B.1070004@soft-com.es> El 18/01/2011 17:05, Francisco Javier Cuadrado escribió: > El día 18 de enero de 2011 16:54, Fernando Guarini > escribió: >> Buenas a todos, >> Recientemente he creado un programa en Python que se ejecuta en terminal. Lo >> creé bajo Linux, y en la cabecera de cada archivo .py que tengo creado, >> tengo escrito: >> #encoding:UTF-8 > > Antes de nada el comentario es: > > # coding: utf-8 > > http://www.python.org/dev/peps/pep-0263/ > >> Así me detecta todos los caracteres, véase tildes, eñes, y lo que sea. >> Bueno, todo iba genial bajo Linux hasta que hoy me ha dado por probar el >> invento en Windows. He descargado pues el intérprete de la página oficial, >> que es el 2.7, y simplemente he ejecutado mi programa. Las funciones van >> perfectamente, pero los caracteres no, y me lo muestra todo de una forma >> bastante horrible. Como os podreis imaginar, ni una sola tilde se ve >> correctamente, sino que en su lugar me la sustituye por símbolos muy raros. >> A ver si os ha pasado a alguno de vosotros y me podeis decir cómo >> solucionarlo. > > Aquí ya no te puedo ayudar, creo que no he programado en Python sobre > windows nunca, si no es por lo que te he dicho antes, quizá sea culpa > de la consola de Windows que no sepa utilizar UTF-8. > La consola de windows no trabaja con utf-8 de forma predeterminada, pero teoricamente se puede modificar. Fernando, haz esta prueba: Abre una consola del sistema c:\>chcp 65001 Tabla de codigos activa: 65001 c:\>python tuprograma.py Si funciona tendras que hacer un archivo cmd que ejecuta el chcp antes que tu programa. Saludos, -- Oswaldo Hernández From fernandoenzo en gmail.com Tue Jan 18 20:58:41 2011 From: fernandoenzo en gmail.com (Fernando Guarini) Date: Tue, 18 Jan 2011 20:58:41 +0100 Subject: [Python-es] =?iso-8859-1?q?Problema_con_la_codificaci=F3n?= In-Reply-To: <4D35E71B.1070004@soft-com.es> References: <4D35E71B.1070004@soft-com.es> Message-ID: Tengo otro problema, y es que a mi no me funciona escribir: python miprograma.py La única forma que tengo de arrancarlo es haciendo doble click sobre el archivo. El 18 de enero de 2011 20:16, Oswaldo Hernández escribió: > El 18/01/2011 17:05, Francisco Javier Cuadrado escribió: > > El día 18 de enero de 2011 16:54, Fernando Guarini >> escribió: >> >>> Buenas a todos, >>> Recientemente he creado un programa en Python que se ejecuta en terminal. >>> Lo >>> creé bajo Linux, y en la cabecera de cada archivo .py que tengo creado, >>> tengo escrito: >>> #encoding:UTF-8 >>> >> >> Antes de nada el comentario es: >> >> # coding: utf-8 >> >> http://www.python.org/dev/peps/pep-0263/ >> >> Así me detecta todos los caracteres, véase tildes, eñes, y lo que sea. >>> Bueno, todo iba genial bajo Linux hasta que hoy me ha dado por probar el >>> invento en Windows. He descargado pues el intérprete de la página >>> oficial, >>> que es el 2.7, y simplemente he ejecutado mi programa. Las funciones van >>> perfectamente, pero los caracteres no, y me lo muestra todo de una forma >>> bastante horrible. Como os podreis imaginar, ni una sola tilde se ve >>> correctamente, sino que en su lugar me la sustituye por símbolos muy >>> raros. >>> A ver si os ha pasado a alguno de vosotros y me podeis decir cómo >>> solucionarlo. >>> >> >> Aquí ya no te puedo ayudar, creo que no he programado en Python sobre >> windows nunca, si no es por lo que te he dicho antes, quizá sea culpa >> de la consola de Windows que no sepa utilizar UTF-8. >> >> > La consola de windows no trabaja con utf-8 de forma predeterminada, pero > teoricamente se puede modificar. > > Fernando, haz esta prueba: > > Abre una consola del sistema > c:\>chcp 65001 > Tabla de codigos activa: 65001 > c:\>python tuprograma.py > > Si funciona tendras que hacer un archivo cmd que ejecuta el chcp antes que > tu programa. > > Saludos, > > -- > Oswaldo Hernández > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From listas en soft-com.es Tue Jan 18 21:46:03 2011 From: listas en soft-com.es (=?ISO-8859-1?Q?Oswaldo_Hern=E1ndez?=) Date: Tue, 18 Jan 2011 21:46:03 +0100 Subject: [Python-es] =?iso-8859-1?q?Problema_con_la_codificaci=F3n?= In-Reply-To: References: <4D35E71B.1070004@soft-com.es> Message-ID: <4D35FC0B.80706@soft-com.es> El 18/01/2011 20:58, Fernando Guarini escribió: > Tengo otro problema, y es que a mi no me funciona escribir: python > miprograma.py > > La única forma que tengo de arrancarlo es haciendo doble click sobre el > archivo. > Crea un archivo 'miprograma.cmd' y que contenga estas lineas chcp 65001 python \pathprogramapy\miprograma.py Haz doble click sobre el -- Oswaldo Hernández From davidmenhur en gmail.com Tue Jan 18 22:22:43 2011 From: davidmenhur en gmail.com (=?UTF-8?B?RGHPgGlk?=) Date: Tue, 18 Jan 2011 22:22:43 +0100 Subject: [Python-es] =?iso-8859-1?q?Problema_con_la_codificaci=F3n?= In-Reply-To: References: <4D35E71B.1070004@soft-com.es> Message-ID: Escribe solamente miprograma.py una vez dentro del directorio. Con eso se ejecuta con la aplicación por defecto. 2011/1/18 Fernando Guarini : > Tengo otro problema, y es que a mi no me funciona escribir: python > miprograma.py > La única forma que tengo de arrancarlo es haciendo doble click sobre el > archivo. > > El 18 de enero de 2011 20:16, Oswaldo Hernández > escribió: >> >> El 18/01/2011 17:05, Francisco Javier Cuadrado escribió: >>> >>> El día 18 de enero de 2011 16:54, Fernando Guarini >>>  escribió: >>>> >>>> Buenas a todos, >>>> Recientemente he creado un programa en Python que se ejecuta en >>>> terminal. Lo >>>> creé bajo Linux, y en la cabecera de cada archivo .py que tengo creado, >>>> tengo escrito: >>>> #encoding:UTF-8 >>> >>> Antes de nada el comentario es: >>> >>> # coding: utf-8 >>> >>> http://www.python.org/dev/peps/pep-0263/ >>> >>>> Así me detecta todos los caracteres, véase tildes, eñes, y lo que sea. >>>> Bueno, todo iba genial bajo Linux hasta que hoy me ha dado por probar el >>>> invento en Windows. He descargado pues el intérprete de la página >>>> oficial, >>>> que es el 2.7, y simplemente he ejecutado mi programa. Las funciones van >>>> perfectamente, pero los caracteres no, y me lo muestra todo de una forma >>>> bastante horrible. Como os podreis imaginar, ni una sola tilde se ve >>>> correctamente, sino que en su lugar me la sustituye por símbolos muy >>>> raros. >>>> A ver si os ha pasado a alguno de vosotros y me podeis decir cómo >>>> solucionarlo. >>> >>> Aquí ya no te puedo ayudar, creo que no he programado en Python sobre >>> windows nunca, si no es por lo que te he dicho antes, quizá sea culpa >>> de la consola de Windows que no sepa utilizar UTF-8. >>> >> >> La consola de windows no trabaja con utf-8 de forma predeterminada, pero >> teoricamente se puede modificar. >> >> Fernando, haz esta prueba: >> >> Abre una consola del sistema >> c:\>chcp 65001 >> Tabla de codigos activa: 65001 >> c:\>python tuprograma.py >> >> Si funciona tendras que hacer un archivo cmd que ejecuta el chcp antes que >> tu programa. >> >> Saludos, >> >> -- >> Oswaldo Hernández >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > From fernandoenzo en gmail.com Wed Jan 19 01:32:13 2011 From: fernandoenzo en gmail.com (Fernando Guarini) Date: Wed, 19 Jan 2011 01:32:13 +0100 Subject: [Python-es] =?iso-8859-1?q?Problema_con_la_codificaci=F3n?= In-Reply-To: References: <4D35E71B.1070004@soft-com.es> Message-ID: He hecho lo que me habeis dicho. Es decir, introducir "chcp65001" antes de ejecutar el programa (gracias David por explicarme cómo). Y ahora, da un error que termina con: LookupError: unknown encoding: cp65001 El 18 de enero de 2011 22:22, Da?id escribió: > Escribe solamente miprograma.py una vez dentro del directorio. Con eso > se ejecuta con la aplicación por defecto. > > 2011/1/18 Fernando Guarini : > > Tengo otro problema, y es que a mi no me funciona escribir: python > > miprograma.py > > La única forma que tengo de arrancarlo es haciendo doble click sobre el > > archivo. > > > > El 18 de enero de 2011 20:16, Oswaldo Hernández > > escribió: > >> > >> El 18/01/2011 17:05, Francisco Javier Cuadrado escribió: > >>> > >>> El día 18 de enero de 2011 16:54, Fernando Guarini > >>> escribió: > >>>> > >>>> Buenas a todos, > >>>> Recientemente he creado un programa en Python que se ejecuta en > >>>> terminal. Lo > >>>> creé bajo Linux, y en la cabecera de cada archivo .py que tengo > creado, > >>>> tengo escrito: > >>>> #encoding:UTF-8 > >>> > >>> Antes de nada el comentario es: > >>> > >>> # coding: utf-8 > >>> > >>> http://www.python.org/dev/peps/pep-0263/ > >>> > >>>> Así me detecta todos los caracteres, véase tildes, eñes, y lo que sea. > >>>> Bueno, todo iba genial bajo Linux hasta que hoy me ha dado por probar > el > >>>> invento en Windows. He descargado pues el intérprete de la página > >>>> oficial, > >>>> que es el 2.7, y simplemente he ejecutado mi programa. Las funciones > van > >>>> perfectamente, pero los caracteres no, y me lo muestra todo de una > forma > >>>> bastante horrible. Como os podreis imaginar, ni una sola tilde se ve > >>>> correctamente, sino que en su lugar me la sustituye por símbolos muy > >>>> raros. > >>>> A ver si os ha pasado a alguno de vosotros y me podeis decir cómo > >>>> solucionarlo. > >>> > >>> Aquí ya no te puedo ayudar, creo que no he programado en Python sobre > >>> windows nunca, si no es por lo que te he dicho antes, quizá sea culpa > >>> de la consola de Windows que no sepa utilizar UTF-8. > >>> > >> > >> La consola de windows no trabaja con utf-8 de forma predeterminada, pero > >> teoricamente se puede modificar. > >> > >> Fernando, haz esta prueba: > >> > >> Abre una consola del sistema > >> c:\>chcp 65001 > >> Tabla de codigos activa: 65001 > >> c:\>python tuprograma.py > >> > >> Si funciona tendras que hacer un archivo cmd que ejecuta el chcp antes > que > >> tu programa. > >> > >> Saludos, > >> > >> -- > >> Oswaldo Hernández > >> _______________________________________________ > >> Python-es mailing list > >> Python-es en python.org > >> http://mail.python.org/mailman/listinfo/python-es > >> FAQ: http://python-es-faq.wikidot.com/ > > > > > > _______________________________________________ > > Python-es mailing list > > Python-es en python.org > > http://mail.python.org/mailman/listinfo/python-es > > FAQ: http://python-es-faq.wikidot.com/ > > > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From kikocorreoso en gmail.com Wed Jan 19 10:41:16 2011 From: kikocorreoso en gmail.com (Kiko) Date: Wed, 19 Jan 2011 10:41:16 +0100 Subject: [Python-es] =?iso-8859-1?q?Oferta_de_trabajo_en_Barcelona_=28Espa?= =?iso-8859-1?q?=F1a=29?= Message-ID: En el grupo 'python community' de linkedin he visto la siguiente oferta, por si a alguno de la lista le pudiera interesar: *Do you feel like working for an innovative music technology company based in Barcelona? * *BMAT is looking for Python developers for his Barcelona office. If you're interested, please, send your cv to jobs en bmat.com* *1. Any candidate with EU working permit is OK to us yet we don't help with relocation expenses. 2. 2y+ experience with python dev with experience in two or more of the following areas: * SQL * Information retrieval (e.g. Lucene) * Screen scraping * Shell scripting * web frameworks * Saludos. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From joseluistorrehernandez en gmail.com Wed Jan 19 16:26:12 2011 From: joseluistorrehernandez en gmail.com (=?UTF-8?Q?Jos=C3=A9_Luis_Torre_Hern=C3=A1ndez?=) Date: Wed, 19 Jan 2011 16:26:12 +0100 Subject: [Python-es] =?utf-8?q?Problema_con_la_codificaci=C3=B3n?= In-Reply-To: References: <4D35E71B.1070004@soft-com.es> Message-ID: Hola: He leído el hilo y creo que debes escribir: chcp 65001 por lo menos, a mí me funciona. José Luis ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From dougjim en gmail.com Wed Jan 19 20:47:23 2011 From: dougjim en gmail.com (=?ISO-8859-1?Q?Douglas_Jim=E9nez?=) Date: Wed, 19 Jan 2011 15:17:23 -0430 Subject: [Python-es] =?iso-8859-1?q?Manual_de_procedimientos_est=E1ndar?= Message-ID: ¡Hola a tod en s! Esta es mi primera pregunta a la lista. Alguna vez fui programador aficionado (fortran, basic, pascal) pero dejé el asunto hace muchos años (no me pregunten cuántos para no entrar en detalles). Me gustaría regresar un poco a este mundo algo perdido para mí y decidí hacerlo con python. En este momento lo que quisiera de ustedes es que me recomendaran algún manual en línea -lo más exhaustivo posible- que contenga listas de procedimientos estándar. Por ejemplo, cuáles son los métodos disponibles para manipular archivos: abrir, cerrar, copiar, eliminar, etc. Imagino que debe haber una lista de objetos estándar cada uno de los cuales tiene sus métodos propios. Me gustaría disponer de ella. Gracias por su colaboración. Saludos a tod en s. Douglas. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From davidmenhur en gmail.com Wed Jan 19 21:24:09 2011 From: davidmenhur en gmail.com (=?UTF-8?B?RGHPgGlk?=) Date: Wed, 19 Jan 2011 21:24:09 +0100 Subject: [Python-es] =?iso-8859-1?q?Manual_de_procedimientos_est=E1ndar?= In-Reply-To: References: Message-ID: La documentación oficial [1] es muy buena y exhaustiva. En particular, para empezar, puedes mirarte el tutorial [2] (si sabes programar en otros lenguajes probablemente vayas bastante rápido). De todas formas, lo que creo que pides también existe. Tienes la descripción de las bibliotecas estándar [3] y la referencia sobre el núcleo del lenguaje [4]. Como ellos mismos las describen, son lacónicas, pero exactas y completas. Como referencia, están bien, pero para aprender, mejor lo anterior. Por cierto, soy el feliz poseedor del libro Python Pocket Reference [5]. Es auténticamente de bolsillo, yo lo llevo siempre encima, y es una referencia rápida y práctica a todo lo fundamental del lenguaje. [1] http://www.python.org/doc/ [2] http://docs.python.org/tutorial/ [3] http://docs.python.org/library/index.html#library-index [4] http://docs.python.org/reference/ [5] http://oreilly.com/catalog/9780596158095?green=19209699401&cmp=af-mybuy-9780596158095.IP 2011/1/19 Douglas Jiménez : > ¡Hola a tod en s! > > Esta es mi primera pregunta a la lista. Alguna vez fui programador > aficionado (fortran, basic, pascal) pero dejé el asunto hace muchos años (no > me pregunten cuántos para no entrar en detalles). Me gustaría regresar un > poco a este mundo algo perdido para mí y decidí hacerlo con python. > > En este momento lo que quisiera de ustedes es que me recomendaran algún > manual en línea -lo más exhaustivo posible- que contenga listas de > procedimientos estándar. Por ejemplo, cuáles son los métodos disponibles > para manipular archivos: abrir, cerrar, copiar, eliminar, etc. Imagino que > debe haber una lista de objetos estándar cada uno de los cuales tiene sus > métodos propios. Me gustaría disponer de ella. > > Gracias por su colaboración. > > Saludos a tod en s. > > Douglas. > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > From dougjim en gmail.com Wed Jan 19 22:00:43 2011 From: dougjim en gmail.com (=?ISO-8859-1?Q?Douglas_Jim=E9nez?=) Date: Wed, 19 Jan 2011 16:30:43 -0430 Subject: [Python-es] =?iso-8859-1?q?Manual_de_procedimientos_est=E1ndar?= In-Reply-To: References: Message-ID: El 19 de enero de 2011 15:54, Da?id escribió: > La documentación oficial [1] es muy buena y exhaustiva. En particular, > para empezar, puedes mirarte el tutorial [2] (si sabes programar en > otros lenguajes probablemente vayas bastante rápido). > > De todas formas, lo que creo que pides también existe. Tienes la > descripción de las bibliotecas estándar [3] y la referencia sobre el > núcleo del lenguaje [4]. Como ellos mismos las describen, son > lacónicas, pero exactas y completas. Como referencia, están bien, pero > para aprender, mejor lo anterior. > > Por cierto, soy el feliz poseedor del libro Python Pocket Reference > [5]. Es auténticamente de bolsillo, yo lo llevo siempre encima, y es > una referencia rápida y práctica a todo lo fundamental del lenguaje. > > > [1] http://www.python.org/doc/ > [2] http://docs.python.org/tutorial/ > [3] http://docs.python.org/library/index.html#library-index > [4] http://docs.python.org/reference/ > [5] > http://oreilly.com/catalog/9780596158095?green=19209699401&cmp=af-mybuy-9780596158095.IP > Darrid: En una primera mirada creo que tu respuesta soluciona mi problema. Muchas gracias. El libro que me recomiendas es muy económico en Amazon. Si me animo a seguir trabajando en esto lo voy a comprar. Douglas. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From pdlopez en uci.cu Thu Jan 20 20:20:42 2011 From: pdlopez en uci.cu (P@vel) Date: Thu, 20 Jan 2011 14:20:42 -0500 (CST) Subject: [Python-es] redireccionar en Django pasando datos In-Reply-To: <734553196.10278251295550946411.JavaMail.root@ucimail1.uci.cu> Message-ID: <1194445612.10279991295551242823.JavaMail.root@ucimail1.uci.cu> Estoy leyendo el libro de Django de Adrian Holovaty y Jacob Kaplan-Moss y estoy en el capitulo 7 procesamiento de formularios y tengo la siguiente duda, tengo las vistas que estan abajo, en la vista contact cuando el formulario es valido me redirecciona para HttpResponseRedirect(/contact/thanks/) segun el ejemplo del libro, ahora en el libro no me dicen nada de la vista thanks yo con lo que he ido aprendiendo puse en mi archivo url.py lo que esta abajo, es decir a la url /contact/thanks/ le asigne una vista para que se pudiera mostrar algo despues que envio el formulario, y claro tambien hice un template llamado thanks.html, no se si esto sea lo mejor, ahora mi duda es de que forma puedo capturar en la vista thanks los datos de la vista contact ***url.py*** (r'^contact/thanks/$', 'mysite.libreria.views.thank'), -Vista ***archivo view.py*** def contact(request): if request.method == 'POST': form = ContactForm(request.POST) if form.is_valid(): topic = form.cleaned_data['topic'] message = form.cleaned_data['message'] sender = form.cleaned_data.get('sender', 'noreply en example.com') #send_mail('Feedback from your site, topic: %s' % topic,message, sender,['pdlopez en hlg.uci.cu']) return HttpResponseRedirect(/contact/thanks/) else: form = ContactForm() return render_to_response('contact.html', {'form': form}) def thanks(request): return render_to_response("thank.html") ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From lasizoillo en gmail.com Fri Jan 21 01:30:28 2011 From: lasizoillo en gmail.com (lasizoillo) Date: Fri, 21 Jan 2011 01:30:28 +0100 Subject: [Python-es] redireccionar en Django pasando datos In-Reply-To: <1194445612.10279991295551242823.JavaMail.root@ucimail1.uci.cu> References: <734553196.10278251295550946411.JavaMail.root@ucimail1.uci.cu> <1194445612.10279991295551242823.JavaMail.root@ucimail1.uci.cu> Message-ID: El día 20 de enero de 2011 20:20, (P en vel) escribió: > Estoy leyendo el libro de Django de Adrian Holovaty y Jacob Kaplan-Moss y > estoy en el capitulo 7 procesamiento de formularios y tengo la siguiente > duda, tengo las vistas que estan abajo,  en  la vista contact cuando el > formulario es valido me redirecciona para > HttpResponseRedirect(/contact/thanks/) segun el ejemplo del libro, ahora en > el libro no me dicen nada de la vista thanks yo con lo que he ido > aprendiendo puse en mi archivo url.py lo que esta abajo, es decir a la url > /contact/thanks/ le asigne una vista para que se pudiera mostrar algo > despues que envio el formulario, y claro tambien hice un template llamado > thanks.html, no se si esto sea lo mejor, ahora mi duda es de que forma puedo > capturar en la vista thanks los datos de la vista contact > > ***url.py*** > (r'^contact/thanks/$', 'mysite.libreria.views.thank'), > > > -Vista > ***archivo view.py*** > def contact(request): >     if request.method == 'POST': >         form = ContactForm(request.POST) >         if form.is_valid(): >             topic = form.cleaned_data['topic'] >             message = form.cleaned_data['message'] >             sender = form.cleaned_data.get('sender', 'noreply en example.com') >             #send_mail('Feedback from your site, topic: %s' % topic,message, > sender,['pdlopez en hlg.uci.cu']) >             return HttpResponseRedirect(/contact/thanks/) >     else: >         form = ContactForm() >     return render_to_response('contact.html', {'form': form}) > > def thanks(request): >       return render_to_response("thank.html") > Lo más simple es usar la sessión: http://docs.djangoproject.com/en/1.2/topics/http/sessions/ From dougjim en gmail.com Fri Jan 21 08:53:11 2011 From: dougjim en gmail.com (=?ISO-8859-1?Q?Douglas_Jim=E9nez?=) Date: Fri, 21 Jan 2011 08:53:11 +0100 Subject: [Python-es] Como accedo al eof Message-ID: ¡Hola a tod en s! Hasta ahora cuando he querido detectar el fin de un archivo uso la función eof, es decir algo como "while not eof(archivo) do". ¿Cómo se hace algo similar en python. No logro dar con una instrucción como ésta en el tutorial. Gracias. Douglas. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From lasizoillo en gmail.com Fri Jan 21 09:13:31 2011 From: lasizoillo en gmail.com (lasizoillo) Date: Fri, 21 Jan 2011 09:13:31 +0100 Subject: [Python-es] Como accedo al eof In-Reply-To: References: Message-ID: El día 21 de enero de 2011 08:53, Douglas Jiménez escribió: > ¡Hola a tod en s! > > Hasta ahora cuando he querido detectar el fin de un archivo uso la función > eof, es decir algo como "while not eof(archivo) do". ¿Cómo se hace algo > similar en python. No logro dar con una instrucción como ésta en el > tutorial. > Python no es C. Tampoco es Java, Haskell, Brainfuck, ... for line in open("lala.txt"): print line, Un fichero es un objeto iterable. Así que puedes limitarte a iterarlo, consiguiendo así las lineas del fichero con sus respectivos intros. Pero esta es solo una forma de leer un fichero. Hay otras. f = open("lala.txt") buf = f.read(42) while buf: print buf, buf = f.read(42) Esta forma es mejor para tratar ficheros binarios. Imagina que estás tratando con un fichero de 4Gb sin un solo intro. Cargaría todo el fichero en memoria como una única linea. Aberrante. Espero que esto responda a tu pregunta. Aunque igual "olvidate del EOF" era suficiente ;-) Saludos: Javi From dougjim en gmail.com Fri Jan 21 12:00:11 2011 From: dougjim en gmail.com (=?ISO-8859-1?Q?Douglas_Jim=E9nez?=) Date: Fri, 21 Jan 2011 12:00:11 +0100 Subject: [Python-es] Como accedo al eof In-Reply-To: References: Message-ID: El 21 de enero de 2011 09:13, lasizoillo escribió: > El día 21 de enero de 2011 08:53, Douglas Jiménez > escribió: > > ¡Hola a tod en s! > > > > Hasta ahora cuando he querido detectar el fin de un archivo ... > > > > Python no es C.... > > Un fichero es un objeto iterable... > ... > > Espero que esto responda a tu pregunta. Aunque igual "olvidate del > EOF" era suficiente ;-) > Fíjate Javi que no era suficiente. Tu explicación me ayudó mucho a comprender el mecanismo. Gracias. > Saludos: > Ídem > > Javi > Douglas ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From dougjim en gmail.com Fri Jan 21 13:06:18 2011 From: dougjim en gmail.com (=?ISO-8859-1?Q?Douglas_Jim=E9nez?=) Date: Fri, 21 Jan 2011 07:36:18 -0430 Subject: [Python-es] =?iso-8859-1?q?=BFC=F3mo_borro_o_renombro_archivos=3F?= Message-ID: ¡Hola a tod en s! Busco en las referencias que me han dado y por San Google y no consigo nada que me diga cómo borrar, copiar, renombrar archivos. ¿Alguna sugerencia? Gracias. Douglas. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From kikocorreoso en gmail.com Fri Jan 21 13:17:29 2011 From: kikocorreoso en gmail.com (Kiko) Date: Fri, 21 Jan 2011 13:17:29 +0100 Subject: [Python-es] =?iso-8859-1?q?=BFC=F3mo_borro_o_renombro_archivos=3F?= In-Reply-To: References: Message-ID: El 21 de enero de 2011 13:06, Douglas Jiménez escribió: > ¡Hola a tod en s! > > Busco en las referencias que me han dado y por San Google y no consigo nada > que me diga cómo borrar, copiar, renombrar archivos. > > ¿Alguna sugerencia? > > Gracias. > > Douglas. > Prueba con el módulo *os* [1] [1] http://docs.python.org/library/os.html#module-os ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From juande en jdmanjon.net Fri Jan 21 14:10:51 2011 From: juande en jdmanjon.net (=?ISO-8859-1?Q?Juan_de_Dios_Manj=F3n_P=E9rez?=) Date: Fri, 21 Jan 2011 14:10:51 +0100 Subject: [Python-es] zipfile Buffered Message-ID: <4D3985DB.3080008@jdmanjon.net> He estado googleando http://www.google.com/search?q=python+zipfile+stream+raw como leer y escribir en un zip usando streams o raw Busco algo parecido a este ejemplo: (solo como muestra) BUFFER_SIZE = io.DEFAULT_BUFFER_SIZE¶ zin =zipfile.ZipFile('archive.zip','r') |zout =zipfile.ZipFile('archve_new.zip','w') foritem inzin.infolist(): reader =zin.BufferedReader(item.filename,| BUFFER_SIZE|) writer = zout.BufferedWriter(||item.filename|, BUFFER_SIZE) chuck = reader.read(BUFFER_SIZE) while chuck: writer.write(chuck) chuck = reader.read(BUFFER_SIZE) reader.close() writer.close() |) zout.close() zin.close() | Saludos Juande ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From dougjim en gmail.com Fri Jan 21 14:54:29 2011 From: dougjim en gmail.com (=?ISO-8859-1?Q?Douglas_Jim=E9nez?=) Date: Fri, 21 Jan 2011 09:24:29 -0430 Subject: [Python-es] =?iso-8859-1?q?=BFC=F3mo_borro_o_renombro_archivos=3F?= In-Reply-To: References: Message-ID: El 21 de enero de 2011 07:47, Kiko escribió: > > > El 21 de enero de 2011 13:06, Douglas Jiménez escribió: > > ¡Hola a tod en s! >> >> Busco en las referencias que me han dado y por San Google ... >> Douglas. >> > > Prueba con el módulo *os* [1] > > [1] http://docs.python.org/library/os.html#module-os > Efectivamente: os.remove(archivo). Gracias. Lo que pasó fue que se me escondió un buen rato. :) D. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From jcaballero.hep en gmail.com Fri Jan 21 21:18:23 2011 From: jcaballero.hep en gmail.com (Jose Caballero) Date: Fri, 21 Jan 2011 15:18:23 -0500 Subject: [Python-es] =?iso-8859-1?q?problema_con_urllib2=2C_s=F3lo_la_prim?= =?iso-8859-1?q?era_conexi=F3n_con_el_=22server=22_funciona?= Message-ID: Hola, necesito enviar ciertos datos a un servidor mediante el método POST, y analizar la respuesta que el servidor me devuelve. Este proceso se realiza varias veces, pasando distinta información en cada comunicación. La comunicación se debe autenticar mediante un certificado PEM. Lo estoy intentando con urllib/urllib2, con un código más o menos como el siguiente (parte copiado de un blog que encontré en google): ------------------------------------------------------------------------------------------------------------------------------ import urllib import urllib2 import httplib def connect(url, data): class HTTPSClientAuthHandler(urllib2.HTTPSHandler): def __init__(self, key, cert): urllib2.HTTPSHandler.__init__(self) self.key = key self.cert = cert def https_open(self, req): # Rather than pass in a reference to a connection class, we pass in # a reference to a function which, for all intents and purposes, # will behave as a constructor return self.do_open(self.getConnection, req) def getConnection(self, host, timeout=300): return httplib.HTTPSConnection(host, key_file=self.key, cert_file=self.cert) opener = urllib2.build_opener(HTTPSClientAuthHandler('/tmp/pem_certificate', '/tmp/pem_certificate') ) urllib2.install_opener(opener) urlhandler = urllib2.urlopen(url, urllib.urlencode(data)) ret = urlhandler.read() return ret ret1 = connect(url, data1) print ret1 ret2 = connect(url, data2) print ret2 ret3 = connect(url, data3) print ret3 ------------------------------------------------------------------------------------------------------------------------------ Mi problema es que sólo la primera conexión funciona. Para la segunda y la tercera el servidor me devuelve un mensaje de error. Este mensaje, algo críptico, viene a decir que estoy estableciendo una comunicación sin autenticar. Sin embargo, el fichero PEM sigue ahí, uso el mismo para las tres conexiones. ¿Por qué funciona la primera vez y no las demás? Nota: no tengo acceso a los logs del servidor. Sólo sé lo que me devuelve como mensaje de error. Lo único que se me ocurre es algún problema de conexiones abiertas que deberían haber sido cerradas o algo similar. Si alguien me puede dar alguna pista estaré eternamente agradecido. Muchas gracias por adelantando. Jose ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From dougjim en gmail.com Sat Jan 22 00:15:40 2011 From: dougjim en gmail.com (=?ISO-8859-1?Q?Douglas_Jim=E9nez?=) Date: Fri, 21 Jan 2011 18:45:40 -0430 Subject: [Python-es] =?iso-8859-1?q?=BFC=F3mo_manejo_los_caracteres_especi?= =?iso-8859-1?q?ales=3F?= Message-ID: ¡Hola a tod en s! El programa con el que me estoy iniciando para trabajar en Python consiste en hacer transportables archivos .tex que dependen de la implementación. Más fácil: los caracteres "á", "é", "í", etc. obtenibles directamente por teclado los debo convertir a "\'a", "\'e", "\'i", etc. Como ven, se trata de un programa de lógica muy sencilla y la única dificultad que consigo ha tenido que ver con el manejo de los archivos, lo cual he ido aprendiendo poco a poco con el apoyo de ustedes y de San Google. Ahora mismo creo que el programa no me corre correctamente por algún inconveniente con la codificación. Por allí vi una sugerencia de usar algo que llaman comentario mágico (magic comment), el cual es "# -*- coding: latin1 -*-" (que también he cambiado por utf-8). No entiendo como un comentario puede cambiar la ejecución de un programa y, de hecho, lo que hace mi programa es dejarme el archivo tal como lo metí. Si sirve de algo: la lógica que utilizó es la de usar dos listas, una con los caracteres indeseables y otra con los que deben sustituirlos colocados en las mismas posiciones en ambas listas. Se recorre el archivo caracter a caracter para hacer la sustitución. No logro identificar dónde está la dificultad. Saludos. Douglas. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From davidmenhur en gmail.com Sat Jan 22 00:32:55 2011 From: davidmenhur en gmail.com (=?UTF-8?B?RGHPgGlk?=) Date: Sat, 22 Jan 2011 00:32:55 +0100 Subject: [Python-es] =?iso-8859-1?q?=BFC=F3mo_manejo_los_caracteres_especi?= =?iso-8859-1?q?ales=3F?= In-Reply-To: References: Message-ID: Hola. El comando coding sirve para definir la codificación de caracteres, y debe ir en la primera o en la segunda línea. Su valor depende del entorno en el que se ejecute. ¿En qué SO estás? En GNU/Linux, debes poner UTF8; en Windows, cp1252. Las líneas y asteriscos son decorativas. Si quieres ahorrarte todo esto, también puedes incluir en el preámbulo de tu documento LaTeX: \usepackage[latin1]{inputenc} Y ya reconoce el texto con tildes. Creo que es paquete estándar. David. 2011/1/22 Douglas Jiménez : > ¡Hola a tod en s! > > El programa con el que me estoy iniciando para trabajar en Python consiste > en hacer transportables archivos .tex que dependen de la implementación. Más > fácil: los caracteres "á", "é", "í", etc. obtenibles directamente por > teclado los debo convertir a "\'a", "\'e", "\'i", etc. > > Como ven, se trata de un programa de lógica muy sencilla y la única > dificultad que consigo ha tenido que ver con el manejo de los archivos, lo > cual he ido aprendiendo poco a poco con el apoyo de ustedes y de San Google. > Ahora mismo creo que el programa no me corre correctamente por algún > inconveniente con la codificación. Por allí vi una sugerencia de usar algo > que llaman comentario mágico (magic comment), el cual es  "# -*- coding: > latin1 -*-" (que también he cambiado por utf-8). No entiendo como un > comentario puede cambiar la ejecución de un programa y, de hecho, lo que > hace mi programa es dejarme el archivo tal como lo metí. > > Si sirve de algo: la lógica que utilizó es la de usar dos listas, una con > los caracteres indeseables y otra con los que deben sustituirlos colocados > en las mismas posiciones en ambas listas. Se recorre el archivo caracter a > caracter para hacer la sustitución. > > No logro identificar dónde está la dificultad. > > Saludos. > > Douglas. > > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > From dougjim en gmail.com Sat Jan 22 02:04:26 2011 From: dougjim en gmail.com (=?ISO-8859-1?Q?Douglas_Jim=E9nez?=) Date: Fri, 21 Jan 2011 20:34:26 -0430 Subject: [Python-es] =?iso-8859-1?q?=BFC=F3mo_manejo_los_caracteres_especi?= =?iso-8859-1?q?ales=3F?= In-Reply-To: References: Message-ID: El 21 de enero de 2011 19:02, Da?id escribió: > Hola. > > El comando coding sirve para definir la codificación de caracteres, y > debe ir en la primera o en la segunda línea. Su valor depende del > entorno en el que se ejecute. > Gracias. Voy a buscar su documentación. > > ¿En qué SO estás? En GNU/Linux, debes poner UTF8; en Windows, cp1252. > Las líneas y asteriscos son decorativas. > Linux, Ubuntu 10.04. > > Si quieres ahorrarte todo esto, también puedes incluir en el preámbulo > de tu documento LaTeX: > > \usepackage[latin1]{inputenc} > \usepackage[utf8]{inputenc}, en linux > Y ya reconoce el texto con tildes. Creo que es paquete estándar. > Sí. Pero justamente ahí está el problema: es dependiente de la plataforma. Claro, en linux puedo usar recode y convertir de una implementación a otra, pero lo que quiero es estandarizar los archivos, pues se trata de compartirlos con usuarios de otros sistemas. Después de todo a LaTeX nos lo ofrecen como un sistema portable y ha sido nuestra pereza la que ha hecho que se pierda algo de esa portabilidad. Gracias por tu amabilidad. > > > > David. > Douglas. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From lasizoillo en gmail.com Sat Jan 22 09:07:04 2011 From: lasizoillo en gmail.com (lasizoillo) Date: Sat, 22 Jan 2011 09:07:04 +0100 Subject: [Python-es] =?utf-8?q?=C2=BFC=C3=B3mo_manejo_los_caracteres_espec?= =?utf-8?q?iales=3F?= In-Reply-To: References: Message-ID: El día 22 de enero de 2011 00:32, Da?id escribió: > Hola. > > El comando coding sirve para definir la codificación de caracteres, y > debe ir en la primera o en la segunda línea. Su valor depende del > entorno en el que se ejecute. > > ¿En qué SO estás? En GNU/Linux, debes poner UTF8; en Windows, cp1252. > Las líneas y asteriscos son decorativas. > El coding le dice al intérprete de python como debe leer el código fuente de ese mismo fichero. Depende de cómo esté codficado ese fichero. Cosa que depende del editor, y no del SO. El editor podría preguntarle al SO cual es el Character-Encoding por defecto para usar uno si no le dices al editor que use el que debe. Lo mismo que si no configuras el editor podría tener que un tab es un tab o 4 u 8 espacios. Lo suyo es usar un editor decente y configurarlo debidamente para trabajar con python. Con eso un mismo fichero funcionaría en windows, linux, freebsd y lo que se le eche por delante. saludos: javi From joseluistorrehernandez en gmail.com Sat Jan 22 09:44:01 2011 From: joseluistorrehernandez en gmail.com (=?UTF-8?Q?Jos=C3=A9_Luis_Torre_Hern=C3=A1ndez?=) Date: Sat, 22 Jan 2011 09:44:01 +0100 Subject: [Python-es] =?utf-8?q?=C2=BFC=C3=B3mo_manejo_los_caracteres_espec?= =?utf-8?q?iales=3F?= In-Reply-To: References: Message-ID: El 22 de enero de 2011 09:07, lasizoillo escribió: > El día 22 de enero de 2011 00:32, Da?id escribió: > > Hola. > > > > El comando coding sirve para definir la codificación de caracteres, y > > debe ir en la primera o en la segunda línea. Su valor depende del > > entorno en el que se ejecute. > > > > ¿En qué SO estás? En GNU/Linux, debes poner UTF8; en Windows, cp1252. > > Las líneas y asteriscos son decorativas. > > > > El coding le dice al intérprete de python como debe leer el código > fuente de ese mismo fichero. Depende de cómo esté codficado ese > fichero. Cosa que depende del editor, y no del SO. El editor podría > preguntarle al SO cual es el Character-Encoding por defecto para usar > uno si no le dices al editor que use el que debe. Lo mismo que si no > configuras el editor podría tener que un tab es un tab o 4 u 8 > espacios. Lo suyo es usar un editor decente y configurarlo debidamente > para trabajar con python. Con eso un mismo fichero funcionaría en > windows, linux, freebsd y lo que se le eche por delante. > > saludos: > > javi > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > Hola: El problema es bastante complejo porque hay que tener en cuenta muchos aspectos. Si imaginamos un sistema centralizado Linux con diferentes tipos de terminales (de distintos fabricantes y que utilicen diferentes juegos de caracteres) la entrada de datos, utilizando el mismo editor, produce ficheros con juegos de caracteres diferentes. Por ello, es necesario contemplar algún criterio que indique el juego de caracteres de los ficheros de entrada (o utilizados por el proceso) e indicar de algún modo el juego de caracteres que vamos a generar en los ficheros de salida. Por otro lado, hay que considerar cómo se codifican los caracteres en el propio proceso (que normalmente es diferente que los juegos de caracteres de las entradas y salidas) Por otro lado a partir de la versión 3 de Python el tratamiento es más sencillo y diferente de las versiones anteriores. Quizás estaría bien entender todos los aspectos del problema antes de decidir cómo resolverlo (porque quizás ya lo esté, aunque yo no lo tengo claro) Un afectuoso saludo José Luis Torre ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From juande en jdmanjon.net Sat Jan 22 11:45:28 2011 From: juande en jdmanjon.net (=?ISO-8859-1?Q?Juan_de_Dios_Manj=F3n_P=E9rez?=) Date: Sat, 22 Jan 2011 11:45:28 +0100 Subject: [Python-es] zipfile Buffered In-Reply-To: <4D3985DB.3080008@jdmanjon.net> References: <4D3985DB.3080008@jdmanjon.net> Message-ID: <4D3AB548.2010401@jdmanjon.net> Mi objetivo es manipular ficheros zip sin tener que extraer a un temp y sin tener que leer todo de golpe con readstring = zin.read(|item.filename)| Y el motivo es claro: quiero trabajar con ficheros zip con entradas de gran tamaño. Se me fué la indentación en el for: BUFFER_SIZE = io.DEFAULT_BUFFER_SIZE¶ zin =zipfile.ZipFile('archive.zip','r') |zout =zipfile.ZipFile('archve_new.zip','w') foritem inzin.infolist(): reader =zin.BufferedReader(item.filename,| BUFFER_SIZE|) writer = zout.BufferedWriter(||item.filename|, BUFFER_SIZE) chuck = reader.read(BUFFER_SIZE) while chuck: writer.write(chuck) chuck = reader.read(BUFFER_SIZE) reader.close() writer.close() zin.close() zout.close() A ver si alguien tiene información de como implementarlo...... Saludos Juande El 21/01/2011 14:10, Juan de Dios Manjón Pérez escribió: > > BUFFER_SIZE = io.DEFAULT_BUFFER_SIZE¶ > > zin =zipfile.ZipFile('archive.zip','r') > > |zout =zipfile.ZipFile('archve_new.zip','w') > > foritem inzin.infolist(): > reader =zin.BufferedReader(item.filename,| BUFFER_SIZE|) > writer = zout.BufferedWriter(||item.filename|, BUFFER_SIZE) > > chuck = reader.read(BUFFER_SIZE) > while chuck: > writer.write(chuck) > chuck = reader.read(BUFFER_SIZE) > > reader.close() > writer.close() ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From andsux en gmail.com Sat Jan 22 12:11:29 2011 From: andsux en gmail.com (Andrey Antoukh) Date: Sat, 22 Jan 2011 12:11:29 +0100 Subject: [Python-es] zipfile Buffered In-Reply-To: <4D3AB548.2010401@jdmanjon.net> References: <4D3985DB.3080008@jdmanjon.net> <4D3AB548.2010401@jdmanjon.net> Message-ID: El día 22 de enero de 2011 11:45, Juan de Dios Manjón Pérez escribió: > Mi objetivo es manipular ficheros zip sin  tener que extraer a un temp y sin > tener que leer todo de golpe con readstring = zin.read(item.filename) > Bueno, en el ejemplo que muestras, no estas leyendo todo de golpe, si no que por trocitos de tamaño que esta definido en io.DEFAULT_BUFFER_SIZE. Por lo que si no me equivoco, el mismo ejemplo ya hace justo lo que pides. Creo que si has tenido que escribir 2 veces el mismo mensaje, para que te responda alguien creo que deberías de mirar si la pregunta que has hecho es la adecuada. Un saludo. > Y el motivo es claro: quiero trabajar con ficheros zip con entradas de gran > tamaño. > > Se me fué la indentación en el for: > > BUFFER_SIZE = io.DEFAULT_BUFFER_SIZE¶ > > zin = zipfile.ZipFile ('archive.zip', 'r') > zout = zipfile.ZipFile ('archve_new.zip', 'w') > > for item in zin.infolist(): >     reader = zin.BufferedReader(item.filename, BUFFER_SIZE) >     writer = zout.BufferedWriter(item.filename, BUFFER_SIZE) >     chuck = reader.read(BUFFER_SIZE) >     while chuck: >         writer.write(chuck) >         chuck = reader.read(BUFFER_SIZE) >     reader.close() >     writer.close() > > zin.close() > zout.close() > > > A ver si alguien tiene información de como implementarlo...... > > Saludos > Juande > > El 21/01/2011 14:10, Juan de Dios Manjón Pérez escribió: > > BUFFER_SIZE = io.DEFAULT_BUFFER_SIZE¶ > > zin = zipfile.ZipFile ('archive.zip', 'r') > > zout = zipfile.ZipFile ('archve_new.zip', 'w') > > for item in zin.infolist(): >     reader = zin.BufferedReader(item.filename, BUFFER_SIZE) >     writer = zout.BufferedWriter(item.filename, BUFFER_SIZE) > > chuck = reader.read(BUFFER_SIZE) > while chuck: >      writer.write(chuck) >      chuck = reader.read(BUFFER_SIZE) > > reader.close() > writer.close() > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- http://twitter.com/andsux http://www.niwi.be **** http://www.freebsd.org/ http://www.postgresql.org/ http://www.python.org/ http://www.djangoproject.com/ "Linux is for people who hate Windows, BSD is for people who love UNIX" "Social Engineer -> Because there is no patch for human stupidity" From eventgrafic en gmail.com Sun Jan 23 13:50:38 2011 From: eventgrafic en gmail.com (Eduard Diaz) Date: Sun, 23 Jan 2011 13:50:38 +0100 Subject: [Python-es] =?iso-8859-1?q?problema_con_urllib2=2C_s=F3lo_la_prim?= =?iso-8859-1?q?era_conexi=F3n_con_el_=22server=22_funciona?= In-Reply-To: References: Message-ID: Hola jose, Seria interesante que enviaras el mensaje de error para tener mas informacion A veces es muy util activar el modo debuglevel en el opener: opener = urllib2.build_opener( HTTPSClientAuthHandler('/tmp/pem_certificate', '/tmp/pem_certificate'), urllib2.HTTPHandler(debuglevel=1) ) según la documentación, urllib2.urlopen envia conexiones HTTP/1.1 con Connection:close en el header http://docs.python.org/library/urllib2.html#urllib2.urlopen Por lo que creo que el problema está en que cada llamada a connect se abre una nueva sesion y por eso en la segunda conexión no estas autenticado. En estos casos normalmente no utilizo urlopen sino que como ya tienes el opener, utilizo request= urllib2.Request para crear el request, esto permite personalizar los headers mediante request.add_header y añadir los datos mediante request.add_data. Una vez que el request tiene toda la información necesaria, haces la llamada mediante opener.open(request).read(). Esto se ha de repetir para cada consulta Ejemplo: opener = urllib2.build_opener( HTTPSClientAuthHandler('/tmp/pem_certificate', '/tmp/pem_certificate'), urllib2.HTTPHandler(debuglevel=1) ) # primera conexion req = urllib2.Request(url) # ... añadir el data ... req.add_data(data1) print opener.open(req).read() # segunda conexion req = urllib2.Request(url) # ... añadir el data ... req.add_data(data2) print opener.open(req).read() Todo esto seria interesante implementarlo en una clase Client que conserve la sesión y que permita hacer las llamadas necesarias según se requiera Por cierto, si te ha sido útil y encuentras la solución, te agradecería que lo publicaras en el hilo, para mi es interesante las comunicaciones entre servicios web y intercambiar las experiencias nos permite a todos profundizar en el tema Un saludo El 21 de enero de 2011 21:18, Jose Caballero escribió: > Hola, > > necesito enviar ciertos datos a un servidor mediante el método POST, y > analizar la respuesta que el servidor me devuelve. > Este proceso se realiza varias veces, pasando distinta información en cada > comunicación. > > La comunicación se debe autenticar mediante un certificado PEM. > > Lo estoy intentando con urllib/urllib2, con un código más o menos como el > siguiente (parte copiado de un blog que encontré en google): > > > ------------------------------------------------------------------------------------------------------------------------------ > > import urllib > import urllib2 > import httplib > > > def connect(url, data): > > class HTTPSClientAuthHandler(urllib2.HTTPSHandler): > def __init__(self, key, cert): > urllib2.HTTPSHandler.__init__(self) > self.key = key > self.cert = cert > > def https_open(self, req): > # Rather than pass in a reference to a connection class, we > pass in > # a reference to a function which, for all intents and > purposes, > # will behave as a constructor > return self.do_open(self.getConnection, req) > > def getConnection(self, host, timeout=300): > return httplib.HTTPSConnection(host, key_file=self.key, > cert_file=self.cert) > > opener = > urllib2.build_opener(HTTPSClientAuthHandler('/tmp/pem_certificate', > '/tmp/pem_certificate') ) > urllib2.install_opener(opener) > urlhandler = urllib2.urlopen(url, urllib.urlencode(data)) > ret = urlhandler.read() > > return ret > > > ret1 = connect(url, data1) > print ret1 > > ret2 = connect(url, data2) > print ret2 > > ret3 = connect(url, data3) > print ret3 > > > ------------------------------------------------------------------------------------------------------------------------------ > > Mi problema es que sólo la primera conexión funciona. > Para la segunda y la tercera el servidor me devuelve un mensaje de error. > Este mensaje, algo críptico, viene a decir que estoy estableciendo una > comunicación sin autenticar. > Sin embargo, el fichero PEM sigue ahí, uso el mismo para las tres > conexiones. > ¿Por qué funciona la primera vez y no las demás? > Nota: no tengo acceso a los logs del servidor. Sólo sé lo que me devuelve > como mensaje de error. > > Lo único que se me ocurre es algún problema de conexiones abiertas que > deberían haber sido cerradas o algo similar. > > Si alguien me puede dar alguna pista estaré eternamente agradecido. > > > Muchas gracias por adelantando. > Jose > > > > > > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- ////////////////////////////////////////////////////////////////////////// Eduard Díaz www.scopia.es SCOPIA VISUAL INTERFACES SYSTEMS S.L. Barcelona Tel. 625 055 126, 933 171 771 ////////////////////////////////////////////////////////////////////////// ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From jcaballero.hep en gmail.com Sun Jan 23 17:17:22 2011 From: jcaballero.hep en gmail.com (Jose Caballero) Date: Sun, 23 Jan 2011 11:17:22 -0500 Subject: [Python-es] =?iso-8859-1?q?problema_con_urllib2=2C_s=F3lo_la_prim?= =?iso-8859-1?q?era_conexi=F3n_con_el_=22server=22_funciona?= In-Reply-To: References: Message-ID: Hola Eduard, He probado el código que recomiendas, pero no funciona. Un print "hola mundo" (para hacer debug a mano) me dice que nunca se está llamando al método https_open(), y por tanto nunca estoy mandando la información del certificado PEM para autenticarme (creo). Parece que me está faltando algo. Por cierto, el error que devuelve el server es un error implementado específico para la aplicación, no es un mensaje de error estándard que tenga significado para el común de los mortales. En concreto es SC=60. Pero, como digo, significa que en los parámetros de la conexión no hay info de autenticación. Muchas gracias de todas formas por tu respuesta. Sigo googleando... Saludos cordiales, Jose El 23 de enero de 2011 07:50, Eduard Diaz escribió: > Hola jose, > > Seria interesante que enviaras el mensaje de error para tener mas > informacion > > A veces es muy util activar el modo debuglevel en el opener: > > > opener = urllib2.build_opener( > HTTPSClientAuthHandler('/tmp/pem_certificate', '/tmp/pem_certificate'), > urllib2.HTTPHandler(debuglevel=1) > ) > > según la documentación, urllib2.urlopen envia conexiones HTTP/1.1 con > Connection:close en el header > http://docs.python.org/library/urllib2.html#urllib2.urlopen > > Por lo que creo que el problema está en que cada llamada a connect se abre > una nueva sesion y por eso en la segunda conexión no estas autenticado. > > En estos casos normalmente no utilizo urlopen sino que como ya tienes el > opener, utilizo request= urllib2.Request para crear el request, esto permite > personalizar los headers mediante request.add_header y añadir los datos > mediante request.add_data. > > Una vez que el request tiene toda la información necesaria, haces la > llamada mediante opener.open(request).read(). > > Esto se ha de repetir para cada consulta > > Ejemplo: > > > opener = urllib2.build_opener( > HTTPSClientAuthHandler('/tmp/pem_certificate', '/tmp/pem_certificate'), > urllib2.HTTPHandler(debuglevel=1) > ) > > # primera conexion > req = urllib2.Request(url) > # ... añadir el data ... > req.add_data(data1) > print opener.open(req).read() > > # segunda conexion > req = urllib2.Request(url) > # ... añadir el data ... > req.add_data(data2) > print opener.open(req).read() > > Todo esto seria interesante implementarlo en una clase Client que conserve > la sesión y que permita hacer las llamadas necesarias según se requiera > > Por cierto, si te ha sido útil y encuentras la solución, te agradecería que > lo publicaras en el hilo, para mi es interesante las comunicaciones entre > servicios web y intercambiar las experiencias nos permite a todos > profundizar en el tema > > Un saludo > > El 21 de enero de 2011 21:18, Jose Caballero escribió: > >> Hola, >> >> necesito enviar ciertos datos a un servidor mediante el método POST, y >> analizar la respuesta que el servidor me devuelve. >> Este proceso se realiza varias veces, pasando distinta información en cada >> comunicación. >> >> La comunicación se debe autenticar mediante un certificado PEM. >> >> Lo estoy intentando con urllib/urllib2, con un código más o menos como el >> siguiente (parte copiado de un blog que encontré en google): >> >> >> ------------------------------------------------------------------------------------------------------------------------------ >> >> import urllib >> import urllib2 >> import httplib >> >> >> def connect(url, data): >> >> class HTTPSClientAuthHandler(urllib2.HTTPSHandler): >> def __init__(self, key, cert): >> urllib2.HTTPSHandler.__init__(self) >> self.key = key >> self.cert = cert >> >> def https_open(self, req): >> # Rather than pass in a reference to a connection class, >> we pass in >> # a reference to a function which, for all intents and >> purposes, >> # will behave as a constructor >> return self.do_open(self.getConnection, req) >> >> def getConnection(self, host, timeout=300): >> return httplib.HTTPSConnection(host, key_file=self.key, >> cert_file=self.cert) >> >> opener = >> urllib2.build_opener(HTTPSClientAuthHandler('/tmp/pem_certificate', >> '/tmp/pem_certificate') ) >> urllib2.install_opener(opener) >> urlhandler = urllib2.urlopen(url, urllib.urlencode(data)) >> ret = urlhandler.read() >> >> return ret >> >> >> ret1 = connect(url, data1) >> print ret1 >> >> ret2 = connect(url, data2) >> print ret2 >> >> ret3 = connect(url, data3) >> print ret3 >> >> >> ------------------------------------------------------------------------------------------------------------------------------ >> >> Mi problema es que sólo la primera conexión funciona. >> Para la segunda y la tercera el servidor me devuelve un mensaje de error. >> Este mensaje, algo críptico, viene a decir que estoy estableciendo una >> comunicación sin autenticar. >> Sin embargo, el fichero PEM sigue ahí, uso el mismo para las tres >> conexiones. >> ¿Por qué funciona la primera vez y no las demás? >> Nota: no tengo acceso a los logs del servidor. Sólo sé lo que me devuelve >> como mensaje de error. >> >> Lo único que se me ocurre es algún problema de conexiones abiertas que >> deberían haber sido cerradas o algo similar. >> >> Si alguien me puede dar alguna pista estaré eternamente agradecido. >> >> >> Muchas gracias por adelantando. >> Jose >> >> >> >> >> >> >> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> > > > -- > ////////////////////////////////////////////////////////////////////////// > Eduard Díaz > www.scopia.es > SCOPIA VISUAL INTERFACES SYSTEMS S.L. > Barcelona > Tel. 625 055 126, 933 171 771 > ////////////////////////////////////////////////////////////////////////// > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From reynaldomic en gmail.com Sun Jan 23 18:07:56 2011 From: reynaldomic en gmail.com (Reynaldo Baquerizo) Date: Sun, 23 Jan 2011 12:07:56 -0500 Subject: [Python-es] =?iso-8859-1?q?problema_con_urllib2=2C_s=F3lo_la_prim?= =?iso-8859-1?q?era_conexi=F3n_con_el_=22server=22_funciona?= In-Reply-To: References: Message-ID: <20110123120756.4c802c00@bertello.localdomain> José, > Mi problema es que sólo la primera conexión funciona. > Para la segunda y la tercera el servidor me devuelve un mensaje de error. > Si alguien me puede dar alguna pista estaré eternamente agradecido. Tengo la remota intuición (y no tengo forma de comprobarlo) que hace falta un HTTPCookieProcessor. Del gran "Python Essential Reference": auth = HTTPSClientAuthHandler('/tmp/pem_certificate', '/tmp/pem_certificate') cookiehand = HTTPCookieProcessor() opener = build_opener(auth, cookiehand) ## opener.open(url, data1) opener.open(url, data2) opener.open(url, data3) Paciencia conmigo si mi intuición me traiciona :-) -- Reynaldo "Stop and Think" From jcaballero.hep en gmail.com Sun Jan 23 19:56:14 2011 From: jcaballero.hep en gmail.com (Jose Caballero) Date: Sun, 23 Jan 2011 13:56:14 -0500 Subject: [Python-es] =?iso-8859-1?q?problema_con_urllib2=2C_s=F3lo_la_prim?= =?iso-8859-1?q?era_conexi=F3n_con_el_=22server=22_funciona?= In-Reply-To: References: Message-ID: > > A veces es muy util activar el modo debuglevel en el opener: > > ¡Y que lo digas! Activándolo, la info de debug me ha dicho que estaba intentando conectar a través de un proxy. (El código no lo ejecuto en mi propia máquina sino en una remota, de la desconocía que tenía ciertas variables de entorno apuntado a un proxy). Una vez he hecho un 'unset' de esas variables todo va como la seda. Muchas gracias por la idea, Eduard. Saludos, Jose ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From eventgrafic en gmail.com Mon Jan 24 00:29:03 2011 From: eventgrafic en gmail.com (Eduard Diaz) Date: Mon, 24 Jan 2011 00:29:03 +0100 Subject: [Python-es] =?iso-8859-1?q?problema_con_urllib2=2C_s=F3lo_la_prim?= =?iso-8859-1?q?era_conexi=F3n_con_el_=22server=22_funciona?= In-Reply-To: References: Message-ID: Genial :D Entonces el problema estaba en el proxy de la maquina remota. De todas maneras si alguna vez ha de llamar a un proxy en cliente con urllib2 se ha de crear expresamente mediante: proxy = urllib2.ProxyHandler({"http" : url}) y añadirlo al build_opener (un proxy http, tambien va bien para debugear las peticiones) Las llamadas al final las haces con opener.open o con urlopen? podrías poner las cuatro lineas de código con las que has hecho la conexión y las peticiones? Saludos y enhorabuena!! El 23 de enero de 2011 19:56, Jose Caballero escribió: > > >> A veces es muy util activar el modo debuglevel en el opener: >> >> > ¡Y que lo digas! > Activándolo, la info de debug me ha dicho que estaba intentando conectar a > través de un proxy. > (El código no lo ejecuto en mi propia máquina sino en una remota, de la > desconocía que tenía ciertas variables de entorno apuntado a un proxy). > Una vez he hecho un 'unset' de esas variables todo va como la seda. > > Muchas gracias por la idea, Eduard. > > Saludos, > Jose > > > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- ////////////////////////////////////////////////////////////////////////// Eduard Díaz www.scopia.es SCOPIA VISUAL INTERFACES SYSTEMS S.L. Barcelona Tel. 625 055 126, 933 171 771 ////////////////////////////////////////////////////////////////////////// ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From sergiomartinj en gmail.com Mon Jan 24 04:35:19 2011 From: sergiomartinj en gmail.com (=?ISO-8859-1?Q?Sergio_Mart=EDn?=) Date: Mon, 24 Jan 2011 04:35:19 +0100 Subject: [Python-es] Guardar un CookieJar en una base de datos sqlite3 Message-ID: Hola, Me gustaría guardar un CookieJar en una base de datos sqlite3. ¿es posible? Hasta ahora la estoy guardando en un archivo independiente, pero mi script maneja una base de datos donde voy guardando varios datos y me gustaría meter ahí también la cookie. Uso Python3 pero cualquier información (aunque sea de Python2) me resultaría muy útil. Gracias. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From jcaballero.hep en gmail.com Mon Jan 24 05:14:05 2011 From: jcaballero.hep en gmail.com (Jose Caballero) Date: Sun, 23 Jan 2011 23:14:05 -0500 Subject: [Python-es] =?utf-8?q?problema_con_urllib2=2C_s=C3=B3lo_la_primer?= =?utf-8?q?a_conexi=C3=B3n_con_el_=22server=22_funciona?= In-Reply-To: References: Message-ID: Sí, he visto lo del ProxyHandler. Al final he decidido implementar un check, algo del estilo if os.environ.has_key("http_proxy"): y usar ProxyHandler o no según el check. En cuanto lo tenga escrito y testeado lo copio. Al final uso urlopen() Saludos, Jose On Jan 23, 2011, at 18:29, Eduard Diaz wrote: > Genial :D > > Entonces el problema estaba en el proxy de la maquina remota. > > De todas maneras si alguna vez ha de llamar a un proxy en cliente con urllib2 se ha de crear expresamente mediante: proxy = urllib2.ProxyHandler({"http" : url}) y añadirlo al build_opener (un proxy http, tambien va bien para debugear las peticiones) > > Las llamadas al final las haces con opener.open o con urlopen? > > podrías poner las cuatro lineas de código con las que has hecho la conexión y las peticiones? > > Saludos y enhorabuena!! > > > > El 23 de enero de 2011 19:56, Jose Caballero escribió: > > > A veces es muy util activar el modo debuglevel en el opener: > > > ¡Y que lo digas! > Activándolo, la info de debug me ha dicho que estaba intentando conectar a través de un proxy. > (El código no lo ejecuto en mi propia máquina sino en una remota, de la desconocía que tenía ciertas variables de entorno apuntado a un proxy). > Una vez he hecho un 'unset' de esas variables todo va como la seda. > > Muchas gracias por la idea, Eduard. > > Saludos, > Jose > > > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > > > > -- > ////////////////////////////////////////////////////////////////////////// > Eduard Díaz > www.scopia.es > SCOPIA VISUAL INTERFACES SYSTEMS S.L. > Barcelona > Tel. 625 055 126, 933 171 771 > ////////////////////////////////////////////////////////////////////////// > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From gerardojuarez en buyteknet.info Mon Jan 24 17:34:50 2011 From: gerardojuarez en buyteknet.info (gerardo Juarez) Date: Mon, 24 Jan 2011 10:34:50 -0600 Subject: [Python-es] zipfile Buffered In-Reply-To: References: <4D3985DB.3080008@jdmanjon.net> <4D3AB548.2010401@jdmanjon.net> Message-ID: <4D3DAA2A.70502@buyteknet.info> Creo que lo que Juan de Dios pregunta es si es posible escribir un código como el que él cita o si existe un equivalente. Por eso lo etiquetó como "sólo como muestra". El problema es que Zipfile tiene en efecto el método read(), pero en el manual no dice que acepte un argumento que indique cuántos bytes queremos que lea. Según el manual, sólo se llama read() una vez por cada entrada del directorio del ZIP, y cada vez extrae *todo* el archivo. Si los archivos son muy grandes, qué hace read()? Los extrae a un sitio temporal? Maneja automáticamente un "buffer"? Arroja una excepción si le falta memoria? Hay que manejar todo esto a mano? Si es cierto esto último, cómo se hace? Gerardo Andrey Antoukh wrote: > El día 22 de enero de 2011 11:45, Juan de Dios Manjón Pérez > escribió: > >> Mi objetivo es manipular ficheros zip sin tener que extraer a un temp y sin >> tener que leer todo de golpe con readstring = zin.read(item.filename) >> >> > Bueno, en el ejemplo que muestras, no estas leyendo todo de golpe, si > no que por trocitos de tamaño que esta definido en > io.DEFAULT_BUFFER_SIZE. Por lo que si no me equivoco, el mismo ejemplo > ya hace justo lo que pides. > > Creo que si has tenido que escribir 2 veces el mismo mensaje, para que > te responda alguien creo que deberías de mirar si la pregunta que has > hecho es la adecuada. > > Un saludo. > > > >> Y el motivo es claro: quiero trabajar con ficheros zip con entradas de gran >> tamaño. >> >> Se me fué la indentación en el for: >> >> BUFFER_SIZE = io.DEFAULT_BUFFER_SIZE¶ >> >> zin = zipfile.ZipFile ('archive.zip', 'r') >> zout = zipfile.ZipFile ('archve_new.zip', 'w') >> >> for item in zin.infolist(): >> reader = zin.BufferedReader(item.filename, BUFFER_SIZE) >> writer = zout.BufferedWriter(item.filename, BUFFER_SIZE) >> chuck = reader.read(BUFFER_SIZE) >> while chuck: >> writer.write(chuck) >> chuck = reader.read(BUFFER_SIZE) >> reader.close() >> writer.close() >> >> zin.close() >> zout.close() >> >> >> A ver si alguien tiene información de como implementarlo...... >> >> Saludos >> Juande >> >> El 21/01/2011 14:10, Juan de Dios Manjón Pérez escribió: >> >> BUFFER_SIZE = io.DEFAULT_BUFFER_SIZE¶ >> >> zin = zipfile.ZipFile ('archive.zip', 'r') >> >> zout = zipfile.ZipFile ('archve_new.zip', 'w') >> >> for item in zin.infolist(): >> reader = zin.BufferedReader(item.filename, BUFFER_SIZE) >> writer = zout.BufferedWriter(item.filename, BUFFER_SIZE) >> >> chuck = reader.read(BUFFER_SIZE) >> while chuck: >> writer.write(chuck) >> chuck = reader.read(BUFFER_SIZE) >> >> reader.close() >> writer.close() >> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> >> > > > > From jeancarlosr_ve en yahoo.com Mon Jan 24 17:16:21 2011 From: jeancarlosr_ve en yahoo.com (=?iso-8859-1?Q?Jean_Carlos_Rodr=ECguez?=) Date: Mon, 24 Jan 2011 08:16:21 -0800 (PST) Subject: [Python-es] Mysqldb en windows 7 Message-ID: <971940.72515.qm@web161210.mail.bf1.yahoo.com> Hola amigos disculpen alguien tendra el ejecutable de mysqldb para windows 7, ya que al tratar de instalarlo desde la fuente me da un error al importar modulo _mysql, y los ejecutables que estan en google estan hechos con windows xp les agradeceria cualquier cosa. En linux no tengo problemas pero tambien lo necesito para windows 7 Python 2.6.6 windows 7 From maengora en gmail.com Mon Jan 24 18:07:58 2011 From: maengora en gmail.com (=?ISO-8859-1?Q?Manuel_Enrique_Gonz=E1lez_Ram=EDrez?=) Date: Mon, 24 Jan 2011 12:07:58 -0500 Subject: [Python-es] Mysqldb en windows 7 In-Reply-To: <971940.72515.qm@web161210.mail.bf1.yahoo.com> References: <971940.72515.qm@web161210.mail.bf1.yahoo.com> Message-ID: Si bajaste el .exe http://sourceforge.net/projects/mysql-python/ y te pone problemas, instalalo con la opción de compatibilidad 2011/1/24 Jean Carlos Rodrìguez > Hola amigos disculpen alguien tendra el ejecutable de mysqldb para windows > 7, ya que al tratar de instalarlo desde la fuente me da un error al importar > modulo _mysql, y los ejecutables que estan en google estan hechos con > windows xp les agradeceria cualquier cosa. > En linux no tengo problemas pero tambien lo necesito para windows 7 > > Python 2.6.6 > windows 7 > > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > -- Manuel Enrique González Ramírez http://maengora.blogspot.com ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From eventgrafic en gmail.com Mon Jan 24 20:05:53 2011 From: eventgrafic en gmail.com (Eduard Diaz) Date: Mon, 24 Jan 2011 20:05:53 +0100 Subject: [Python-es] Guardar un CookieJar en una base de datos sqlite3 In-Reply-To: References: Message-ID: Hola, Que quieres guardar el string de la cookie o el objeto cookiejar? Si es el string puedes obtenerlo a partir de la instancia de CookieJar, por ejemplo: cookiejar = cookielib.CookieJar() # tu codigo [...] cookies_str = ' '.join(['%s:%s'%(cookie.name, cookie.value) for cookie in cookiejar]) y puedes guardar el string Si lo que quieres es guardar el objeto, es un poco mas complicado. Tendrás que hacer un pickle del objeto http://docs.python.org/library/pickle.html#pickle.dumps Eso es en teoría, es cuestión de probarlo :D Un saludo -- ////////////////////////////////////////////////////////////////////////// Eduard Díaz www.scopia.es SCOPIA VISUAL INTERFACES SYSTEMS S.L. Barcelona Tel. 625 055 126, 933 171 771 ////////////////////////////////////////////////////////////////////////// El 24 de enero de 2011 04:35, Sergio Martín escribió: > Hola, Me gustaría guardar un CookieJar en una base de datos sqlite3. ¿es > posible? Hasta ahora la estoy guardando en un archivo independiente, pero mi > script maneja una base de datos donde voy guardando varios datos y me > gustaría meter ahí también la cookie. > Uso Python3 pero cualquier información (aunque sea de Python2) me > resultaría muy útil. > Gracias. > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From andsux en gmail.com Mon Jan 24 20:14:59 2011 From: andsux en gmail.com (Andrey Antoukh) Date: Mon, 24 Jan 2011 20:14:59 +0100 Subject: [Python-es] zipfile Buffered In-Reply-To: <4D3DAA2A.70502@buyteknet.info> References: <4D3985DB.3080008@jdmanjon.net> <4D3AB548.2010401@jdmanjon.net> <4D3DAA2A.70502@buyteknet.info> Message-ID: http://docs.python.org/py3k/library/zipfile.html ZipFile.open(name, mode='r', pwd=None) Extract a member from the archive as a file-like object (ZipExtFile). name is the name of the file in the archive, or a ZipInfo object. The mode parameter, if included, must be one of the following: 'r' (the default), 'U', or 'rU'. Choosing 'U' or 'rU' will enable universal newline support in the read-only object. pwd is the password used for encrypted files. Calling open() on a closed ZipFile will raise a RuntimeError. Note The file-like object is read-only and provides the following methods: read(), readline(), readlines(), __iter__(), __next__(). Lo que a groso modo quiere decir que devuelve un objeto fichero que tiene todos los métodos estándares para leer. De lo que se deduce que podemos leerlos a cachitos para que no ocupe memoria. La implementación seria parecida a la que ya se ha propuesto. O como el simple ejemplo... >>> zipobj = zipfile.ZipFile("prueba.zip", "r") >>> for zip in zipobj.namelist(): ... zipfileobj = zipobj.open(zip, "r") ... for chuck in zipfileobj: ... # lo que sea que tengas que hacer con estos datos. Un saludo. El día 24 de enero de 2011 17:34, gerardo Juarez < gerardojuarez en buyteknet.info> escribió: > Creo que lo que Juan de Dios pregunta es si es posible escribir un código > como el que él cita o si existe un equivalente. Por eso lo etiquetó como > "sólo como muestra". > > El problema es que Zipfile tiene en efecto el método read(), pero en el > manual no dice que acepte un argumento que > indique cuántos bytes queremos que lea. Según el manual, sólo se llama > read() una vez por cada entrada del directorio del ZIP, > y cada vez extrae *todo* el archivo. Si los archivos son muy grandes, qué > hace read()? Los extrae a un sitio temporal? Maneja > automáticamente un "buffer"? Arroja una excepción si le falta memoria? Hay > que manejar todo esto a mano? Si es cierto esto > último, cómo se hace? > > Gerardo > > Andrey Antoukh wrote: >> >> El día 22 de enero de 2011 11:45, Juan de Dios Manjón Pérez >> escribió: >> >>> >>> Mi objetivo es manipular ficheros zip sin tener que extraer a un temp y >>> sin >>> tener que leer todo de golpe con readstring = zin.read(item.filename) >>> >>> >> >> Bueno, en el ejemplo que muestras, no estas leyendo todo de golpe, si >> no que por trocitos de tamaño que esta definido en >> io.DEFAULT_BUFFER_SIZE. Por lo que si no me equivoco, el mismo ejemplo >> ya hace justo lo que pides. >> >> Creo que si has tenido que escribir 2 veces el mismo mensaje, para que >> te responda alguien creo que deberías de mirar si la pregunta que has >> hecho es la adecuada. >> >> Un saludo. >> >> >> >>> >>> Y el motivo es claro: quiero trabajar con ficheros zip con entradas de >>> gran >>> tamaño. >>> >>> Se me fué la indentación en el for: >>> >>> BUFFER_SIZE = io.DEFAULT_BUFFER_SIZE¶ >>> >>> zin = zipfile.ZipFile ('archive.zip', 'r') >>> zout = zipfile.ZipFile ('archve_new.zip', 'w') >>> >>> for item in zin.infolist(): >>> reader = zin.BufferedReader(item.filename, BUFFER_SIZE) >>> writer = zout.BufferedWriter(item.filename, BUFFER_SIZE) >>> chuck = reader.read(BUFFER_SIZE) >>> while chuck: >>> writer.write(chuck) >>> chuck = reader.read(BUFFER_SIZE) >>> reader.close() >>> writer.close() >>> >>> zin.close() >>> zout.close() >>> >>> >>> A ver si alguien tiene información de como implementarlo...... >>> >>> Saludos >>> Juande >>> >>> El 21/01/2011 14:10, Juan de Dios Manjón Pérez escribió: >>> >>> BUFFER_SIZE = io.DEFAULT_BUFFER_SIZE¶ >>> >>> zin = zipfile.ZipFile ('archive.zip', 'r') >>> >>> zout = zipfile.ZipFile ('archve_new.zip', 'w') >>> >>> for item in zin.infolist(): >>> reader = zin.BufferedReader(item.filename, BUFFER_SIZE) >>> writer = zout.BufferedWriter(item.filename, BUFFER_SIZE) >>> >>> chuck = reader.read(BUFFER_SIZE) >>> while chuck: >>> writer.write(chuck) >>> chuck = reader.read(BUFFER_SIZE) >>> >>> reader.close() >>> writer.close() >>> >>> _______________________________________________ >>> Python-es mailing list >>> Python-es en python.org >>> http://mail.python.org/mailman/listinfo/python-es >>> FAQ: http://python-es-faq.wikidot.com/ >>> >>> >>> >> >> >> >> > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > -- http://twitter.com/andsux http://www.niwi.be **** http://www.freebsd.org/ http://www.postgresql.org/ http://www.python.org/ http://www.djangoproject.com/ "Linux is for people who hate Windows, BSD is for people who love UNIX" "Social Engineer -> Because there is no patch for human stupidity" ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From andsux en gmail.com Mon Jan 24 21:05:36 2011 From: andsux en gmail.com (Andrey Antoukh) Date: Mon, 24 Jan 2011 21:05:36 +0100 Subject: [Python-es] Guardar un CookieJar en una base de datos sqlite3 In-Reply-To: References: Message-ID: La mejor solucion a eso es reimplementar la clase CookieJar y hacer que el almacenamiento sea mediante una db sqlite. Lo dice en la misma documentación: http://docs.python.org/py3k/library/http.cookiejar.html#http.cookiejar.CookieJar Un saludo. El 24 de enero de 2011 20:05, Eduard Diaz escribió: > > Hola, > > Que quieres guardar el string de la cookie o el objeto cookiejar? > > Si es el string puedes obtenerlo a partir de la instancia de CookieJar, por ejemplo: > > cookiejar = cookielib.CookieJar() > # tu codigo [...] > cookies_str = ' '.join(['%s:%s'%(cookie.name, cookie.value) for cookie in cookiejar]) > > y puedes guardar el string > > Si lo que quieres es guardar el objeto, es un poco mas complicado. > > Tendrás que hacer un pickle del objeto > http://docs.python.org/library/pickle.html#pickle.dumps > > Eso es en teoría, es cuestión de probarlo :D > > Un saludo > > > -- > ////////////////////////////////////////////////////////////////////////// > Eduard Díaz > www.scopia.es > SCOPIA VISUAL INTERFACES SYSTEMS S.L. > Barcelona > Tel. 625 055 126, 933 171 771 > ////////////////////////////////////////////////////////////////////////// > > > El 24 de enero de 2011 04:35, Sergio Martín escribió: >> >> Hola, Me gustaría guardar un CookieJar en una base de datos sqlite3. ¿es posible? Hasta ahora la estoy guardando en un archivo independiente, pero mi script maneja una base de datos donde voy guardando varios datos y me gustaría meter ahí también la cookie. >> Uso Python3 pero cualquier información (aunque sea de Python2) me resultaría muy útil. >> Gracias. >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> > > > > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > -- http://twitter.com/andsux http://www.niwi.be **** http://www.freebsd.org/ http://www.postgresql.org/ http://www.python.org/ http://www.djangoproject.com/ "Linux is for people who hate Windows, BSD is for people who love UNIX" "Social Engineer -> Because there is no patch for human stupidity" From juande en jdmanjon.net Mon Jan 24 23:29:33 2011 From: juande en jdmanjon.net (=?UTF-8?B?SnVhbiBkZSBEaW9zIE1hbmrDs24gUMOpcmV6?=) Date: Mon, 24 Jan 2011 23:29:33 +0100 Subject: [Python-es] zipfile Buffered In-Reply-To: References: <4D3985DB.3080008@jdmanjon.net> <4D3AB548.2010401@jdmanjon.net> <4D3DAA2A.70502@buyteknet.info> Message-ID: <4D3DFD4D.6040404@jdmanjon.net> Andrey, también he llegado al punto que comentas, el problema que tengo ahora es para escribir el chuck, ya que ZipFile.open(name, mode='r', pwd=None) no admite mode='w'. El unico metodo ZipFile.writestr(zinfo_or_arcname, bytes) que he encontrado para escribir requiere que se escriba TODO de golpe. La implementación que busco es parecida a: from zipfile import ZipFile from shutil import copyfileobj def copyZipFile(source, target): zsource = ZipFile(source,"r") ztarget = ZipFile(target,"w") for item in zsource.infolist(): fsrc = zsource.open(item.filename,"r") fdst = ztarget.open(item.filename,"w") #mode no acepta "w". exception copyfileobj(fsrc,fdst) fdst.close() fsrc.close() zsource.close() ztarget.close() Saludos Juande El 24/01/2011 20:14, Andrey Antoukh escribió: > http://docs.python.org/py3k/library/zipfile.html > > ZipFile.open(name, mode='r', pwd=None) > Extract a member from the archive as a file-like object (ZipExtFile). > name is the name of the file in the archive, or a ZipInfo object. The > mode parameter, if included, must be one of the following: 'r' (the > default), 'U', or 'rU'. Choosing 'U' or 'rU' will enable universal > newline support in the read-only object. pwd is the password used for > encrypted files. Calling open() on a closed ZipFile will raise a > RuntimeError. > > Note The file-like object is read-only and provides the following > methods: read(), readline(), readlines(), __iter__(), __next__(). > > Lo que a groso modo quiere decir que devuelve un objeto fichero que > tiene todos los métodos estándares para leer. De lo que se deduce que > podemos leerlos a cachitos para que no ocupe memoria. > > La implementación seria parecida a la que ya se ha propuesto. O como > el simple ejemplo... > > >>> zipobj = zipfile.ZipFile("prueba.zip", "r") > >>> for zip in zipobj.namelist(): > ... zipfileobj = zipobj.open(zip, "r") > ... for chuck in zipfileobj: > ... # lo que sea que tengas que hacer con estos datos. > > Un saludo. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From juande en jdmanjon.net Tue Jan 25 01:12:47 2011 From: juande en jdmanjon.net (=?UTF-8?B?SnVhbiBkZSBEaW9zIE1hbmrDs24gUMOpcmV6?=) Date: Tue, 25 Jan 2011 01:12:47 +0100 Subject: [Python-es] zipfile Buffered In-Reply-To: <4D3DFD4D.6040404@jdmanjon.net> References: <4D3985DB.3080008@jdmanjon.net> <4D3AB548.2010401@jdmanjon.net> <4D3DAA2A.70502@buyteknet.info> <4D3DFD4D.6040404@jdmanjon.net> Message-ID: <4D3E157F.4050402@jdmanjon.net> Conseguido!! A partir de esta información: http://stackoverflow.com/questions/297345/create-a-zip-file-from-a-generator-in-python/2734156#2734156 He creado esta implementación, os la dejo por si alguno le interesara: import time, shutil from zipfile import ZipFile, ZipInfo, ZIP_DEFLATED import zlib, binascii, struct class ZipWriter(object): def __init__(self, zf, filename): self.zf = zf self.filename = filename self.zinfo = self._ZipInfo(filename) self.file_size = 0 self.compress_size = 0 self.CRC = 0 if self.zinfo.compress_type == ZIP_DEFLATED: self.cmpr = zlib.compressobj(zlib.Z_DEFAULT_COMPRESSION, zlib.DEFLATED, -15) else: self.cmpr = None def _ZipInfo(self, filename): zinfo = ZipInfo(filename=filename, date_time=time.localtime(time.time())[:6]) zinfo.compress_type = self.zf.compression zinfo.external_attr = 0600 << 16 zinfo.file_size = 0 zinfo.flag_bits = 0x00 zinfo.CRC = 0 zinfo.compress_size = 0 zinfo.header_offset = self.zf.fp.tell() # Start of header bytes self.zf._writecheck(zinfo) self.zf._didModify = True self.zf.fp.write(zinfo.FileHeader()) return zinfo def write(self, bytes): self.file_size = self.file_size + len(bytes) self.CRC = binascii.crc32(bytes, self.CRC) if self.cmpr: bytes = self.cmpr.compress(bytes) self.compress_size = self.compress_size + len(bytes) self.zf.fp.write(bytes) def close(self): if self.cmpr: buf = cmpr.flush() self.compress_size = self.compress_size + len(buf) self.zf.fp.write(buf) self.zinfo.compress_size = self.compress_size else: self.zinfo.compress_size = self.file_size self.zinfo.CRC = self.CRC self.zinfo.file_size = self.file_size position = self.zf.fp.tell() self.zf.fp.seek(self.zinfo.header_offset + 14, 0) self.zf.fp.write(struct.pack(" Andrey, > > también he llegado al punto que comentas, > el problema que tengo ahora es para escribir el chuck, ya que > ZipFile.open(name, mode='r', pwd=None) no admite mode='w'. > > El unico metodo ZipFile.writestr(zinfo_or_arcname, bytes) que he > encontrado para escribir requiere que se escriba TODO de golpe. > > La implementación que busco es parecida a: > > from zipfile import ZipFile > from shutil import copyfileobj > > def copyZipFile(source, target): > zsource = ZipFile(source,"r") > ztarget = ZipFile(target,"w") > > for item in zsource.infolist(): > fsrc = zsource.open(item.filename,"r") > fdst = ztarget.open(item.filename,"w") #mode no acepta "w". > exception > copyfileobj(fsrc,fdst) > fdst.close() > fsrc.close() > > zsource.close() > ztarget.close() > > > Saludos > > Juande > > > > El 24/01/2011 20:14, Andrey Antoukh escribió: >> http://docs.python.org/py3k/library/zipfile.html >> >> ZipFile.open(name, mode='r', pwd=None) >> Extract a member from the archive as a file-like object (ZipExtFile). >> name is the name of the file in the archive, or a ZipInfo object. The >> mode parameter, if included, must be one of the following: 'r' (the >> default), 'U', or 'rU'. Choosing 'U' or 'rU' will enable universal >> newline support in the read-only object. pwd is the password used for >> encrypted files. Calling open() on a closed ZipFile will raise a >> RuntimeError. >> >> Note The file-like object is read-only and provides the following >> methods: read(), readline(), readlines(), __iter__(), __next__(). >> >> Lo que a groso modo quiere decir que devuelve un objeto fichero que >> tiene todos los métodos estándares para leer. De lo que se deduce que >> podemos leerlos a cachitos para que no ocupe memoria. >> >> La implementación seria parecida a la que ya se ha propuesto. O como >> el simple ejemplo... >> >> >>> zipobj = zipfile.ZipFile("prueba.zip", "r") >> >>> for zip in zipobj.namelist(): >> ... zipfileobj = zipobj.open(zip, "r") >> ... for chuck in zipfileobj: >> ... # lo que sea que tengas que hacer con estos datos. >> >> Un saludo. > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From andsux en gmail.com Tue Jan 25 01:25:24 2011 From: andsux en gmail.com (Andrey Antoukh) Date: Tue, 25 Jan 2011 01:25:24 +0100 Subject: [Python-es] zipfile Buffered In-Reply-To: <4D3DFD4D.6040404@jdmanjon.net> References: <4D3985DB.3080008@jdmanjon.net> <4D3AB548.2010401@jdmanjon.net> <4D3DAA2A.70502@buyteknet.info> <4D3DFD4D.6040404@jdmanjon.net> Message-ID: He estado mirando el código de la implementación de zipfile de python3 y sinceramente, no se si habrá alguna manera simple de implementar la escritura de un stream, tal como lo planteas. Sin embargo con gzip eso cambia, pero supongo que no es el caso que interese. Siento no ser de mucha mas ayuda. Un saludo. Andrei. El día 24 de enero de 2011 23:29, Juan de Dios Manjón Pérez escribió: > Andrey, > > también he llegado al punto que comentas, > el problema que tengo ahora es para escribir el chuck, ya que > ZipFile.open(name, mode='r', pwd=None) no admite mode='w'. > > El unico metodo ZipFile.writestr(zinfo_or_arcname, bytes) que he encontrado > para escribir requiere que se escriba TODO de golpe. > > La implementación que busco es parecida a: > > from zipfile import ZipFile > from shutil import copyfileobj > > def copyZipFile(source, target): >     zsource = ZipFile(source,"r") >     ztarget = ZipFile(target,"w") > >     for item in zsource.infolist(): >         fsrc = zsource.open(item.filename,"r") >         fdst = ztarget.open(item.filename,"w") #mode no acepta "w". > exception >         copyfileobj(fsrc,fdst) >         fdst.close() >         fsrc.close() > >     zsource.close() >     ztarget.close() > > > Saludos > > Juande > > > > El 24/01/2011 20:14, Andrey Antoukh escribió: > > http://docs.python.org/py3k/library/zipfile.html > > ZipFile.open(name, mode='r', pwd=None) > Extract a member from the archive as a file-like object (ZipExtFile). name > is the name of the file in the archive, or a ZipInfo object. The mode > parameter, if included, must be one of the following: 'r' (the default), > 'U', or 'rU'. Choosing 'U' or 'rU' will enable universal newline support in > the read-only object. pwd is the password used for encrypted files. Calling > open() on a closed ZipFile will raise a RuntimeError. > > Note The file-like object is read-only and provides the following methods: > read(), readline(), readlines(), __iter__(), __next__(). > > Lo que a groso modo quiere decir que devuelve un objeto fichero que tiene > todos los métodos estándares para leer. De lo que se deduce que podemos > leerlos a cachitos para que no ocupe memoria. > > La implementación seria parecida a la que ya se ha propuesto.  O como el > simple ejemplo... > >>>> zipobj = zipfile.ZipFile("prueba.zip", "r") >>>> for zip in zipobj.namelist(): > ...     zipfileobj = zipobj.open(zip, "r") > ...     for chuck in zipfileobj: > ...         # lo que sea que tengas que hacer con estos datos. > > Un saludo. > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- http://twitter.com/andsux http://www.niwi.be **** http://www.freebsd.org/ http://www.postgresql.org/ http://www.python.org/ http://www.djangoproject.com/ "Linux is for people who hate Windows, BSD is for people who love UNIX" "Social Engineer -> Because there is no patch for human stupidity" From jeancarlosr_ve en yahoo.com Tue Jan 25 04:22:20 2011 From: jeancarlosr_ve en yahoo.com (=?iso-8859-1?Q?Jean_Carlos_Rodr=ECguez?=) Date: Mon, 24 Jan 2011 19:22:20 -0800 (PST) Subject: [Python-es] Mysqldb en windows 7 In-Reply-To: Message-ID: <248097.29306.qm@web161204.mail.bf1.yahoo.com> Si bajaste el .exe http://sourceforge.net/projects/mysql-python/ y te pone problemas, instalalo con la opción de compatibilidad al darle python setup.py build me da un error en: building '_mysql' extension error: Unable to find vcvarsall.bat ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From maengora en gmail.com Tue Jan 25 13:40:55 2011 From: maengora en gmail.com (=?ISO-8859-1?Q?Manuel_Enrique_Gonz=E1lez_Ram=EDrez?=) Date: Tue, 25 Jan 2011 07:40:55 -0500 Subject: [Python-es] Mysqldb en windows 7 In-Reply-To: <248097.29306.qm@web161204.mail.bf1.yahoo.com> References: <248097.29306.qm@web161204.mail.bf1.yahoo.com> Message-ID: 2011/1/24 Jean Carlos Rodrìguez > Si bajaste el .exe http://sourceforge.net/projects/mysql-python/ y te pone > problemas, > instalalo con la opción de compatibilidad > > al darle python setup.py build > me da un error en: > building '_mysql' extension > error: Unable to find vcvarsall.bat > > La verdad yo hace mucho rato que uso windows pero cuando lo hacía me descargaba el ejecutable, teniendo en cuenta que fuera compatible con la versión de Python que tenía instalada, es decir; si instale Python 2.x descargaba el MySQLdb para Python 2.x Te lo comento porque no sé con que versión estás trabajando; es posible que tengas instalado el Python 3 y estés descargando el MySQLdb para Python 2.5, mira la sinápsis de la web de MySQL for Python: "MySQL support for Python. MySQL versions 3.23-5.1; *and Python versions 2.3-2.6 are supported*. MySQLdb is the Python DB API-2.0 interface. _mysql is a low-level API similiar to the MySQL C API. ZMySQLDA is a Database Adapter for Zope2" Sólo es soportada desde la 2.3 a la 2.6; quizás te funcione con otras versiones de Python o quizás no. Si tienes el fuente lo que debes hacer directamente es darle *python setup.py install* Si aún después de todo te sigue generando el mismo error u otro verifica que tienes agregado en el PATH la ruta de Python o que tienes instalado el compilador mingw32 que es un desarrollo GNU para windows que te permite "compilar" usango librerías gcc y usar la api de windows. Espero haberte sido de ayuda. Cualquier cosa en la que te pueda colaborar no dudes en consultarla. > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- Manuel Enrique González Ramírez http://maengora.blogspot.com ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From rmayorgav en cpanda.net Tue Jan 25 14:07:40 2011 From: rmayorgav en cpanda.net (Rodrigo Mayorga Vallejos) Date: Tue, 25 Jan 2011 10:07:40 -0300 Subject: [Python-es] Mysqldb en windows 7 In-Reply-To: <248097.29306.qm@web161204.mail.bf1.yahoo.com> References: <248097.29306.qm@web161204.mail.bf1.yahoo.com> Message-ID: http://www.lfd.uci.edu/~gohlke/pythonlibs/ 2011/1/25 Jean Carlos Rodrìguez > Si bajaste el .exe http://sourceforge.net/projects/mysql-python/ y te pone > problemas, > instalalo con la opción de compatibilidad > > al darle python setup.py build > me da un error en: > building '_mysql' extension > error: Unable to find vcvarsall.bat > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- Rodrigo Mayorga Vallejos ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From jeancarlosr_ve en yahoo.com Tue Jan 25 15:38:24 2011 From: jeancarlosr_ve en yahoo.com (=?iso-8859-1?Q?Jean_Carlos_Rodr=ECguez?=) Date: Tue, 25 Jan 2011 06:38:24 -0800 (PST) Subject: [Python-es] Mysqldb en windows 7 In-Reply-To: Message-ID: <609544.22643.qm@web161204.mail.bf1.yahoo.com> http://www.lfd.uci.edu/~gohlke/pythonlibs/ Gracias listo muy buena pagina la recomiendo para windows ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From emperor.cu en gmail.com Tue Jan 25 17:08:29 2011 From: emperor.cu en gmail.com (=?ISO-8859-1?Q?Tony_Pe=F1a?=) Date: Tue, 25 Jan 2011 12:08:29 -0400 Subject: [Python-es] duda con subprocess.Popen Message-ID: Hola estoy intentando probar el subprocess.Popen pero no entiendo bien como funciona pq un ejemplo hipotetico si quisiera ejecutar un comando como ls -lhR / yo ejecuto el comando con cmd = "ls -lhR /" subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True).command()[0] y se me queda colgado o bloqueado el script hasta que no termine, necesitaria ver com seria el ejemplo mas claro de lo que he visto en las webs por ahi para poder salirme del proceso child y poder continuar con el script valorando segun la salida de ese comando otras cuestiones... alguna idea? es un ejemplo con un comando que demore cosa que podria ser copiando o leyendo algun fichero grande y cosas asi... espero ser claro con la duda :) P.D. el script es una interfaz pygtk por lo que la ventana con los objetos se me queda en blanco completamente pq es como si entrara en el subproceso pero nunca saliese de el :S saludos Tony ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From pyarnau en gmail.com Tue Jan 25 17:25:30 2011 From: pyarnau en gmail.com (Arnau Sanchez) Date: Tue, 25 Jan 2011 17:25:30 +0100 Subject: [Python-es] duda con subprocess.Popen In-Reply-To: References: Message-ID: <20110125172530.039f1136@gmail.com> On Tue, 25 Jan 2011 12:08:29 -0400 Tony Peña wrote: > cmd = "ls -lhR /" > subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True).command()[0] Querías decir communicate(), ¿no? http://docs.python.org/library/subprocess.html#subprocess.Popen.communicate "Read data from stdout and stderr, until end-of-file is reached. Wait for process to terminate." O sea, que no te sirve. Lo que tienes que hacer es guardar el objeto popen para luego trabajar con él. Ten en cuenta que el simple hecho de instanciarlo ya arranca el proceso: popen = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True) Ahora por ejemplo podrías hacer popen.stdout.read(), pero esto de nuevo es bloqueante. Como dices que estás con pygtk deberías mirarte: http://www.pygtk.org/pygtk2tutorial/sec-MonitoringIO.html Con esto deberías ser capaz de ir leyendo la salida de popen.stdout poco a poco (desde callbacks), y el bucle de eventos del GUI seguirá funcionando sin problemas. arnau From jordi.f en ati.es Tue Jan 25 17:37:39 2011 From: jordi.f en ati.es (Jordi Funollet) Date: Tue, 25 Jan 2011 17:37:39 +0100 Subject: [Python-es] duda con subprocess.Popen In-Reply-To: References: Message-ID: <201101251737.40038.jordi.f@ati.es> On Tuesday 25 January 2011 17:08:29 Tony Peña wrote: > pq es como si entrara en el subproceso pero nunca saliese de el :S Si lanzas el comand 'ls -lhR' fuera de Python, ¿cuanto tarda en completarse? ¿Le estás dando el mismo tiempo a tu script Python? -- ############################## ### Jordi Funollet ### http://www.terraquis.net From emperor.cu en gmail.com Tue Jan 25 18:09:41 2011 From: emperor.cu en gmail.com (=?ISO-8859-1?Q?Tony_Pe=F1a?=) Date: Tue, 25 Jan 2011 13:09:41 -0400 Subject: [Python-es] duda con subprocess.Popen In-Reply-To: <20110125172530.039f1136@gmail.com> References: <20110125172530.039f1136@gmail.com> Message-ID: si era communicate gracias por la pista puff no me fije en el pedacito de aviso ese de hasta no terminar el buffer no puedo utilizar los std[in|out] revisare la doc del pygtk para poder ver lo del monitoring IO a ver espero resolver con eso. thanxs tony El 25 de enero de 2011 12:25, Arnau Sanchez escribió: > On Tue, 25 Jan 2011 12:08:29 -0400 Tony Peña wrote: > > > cmd = "ls -lhR /" > > subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True).command()[0] > > Querías decir communicate(), ¿no? > > http://docs.python.org/library/subprocess.html#subprocess.Popen.communicate > > "Read data from stdout and stderr, until end-of-file is reached. Wait for > process to terminate." > > O sea, que no te sirve. Lo que tienes que hacer es guardar el objeto popen > para luego trabajar con él. Ten en cuenta que el simple hecho de > instanciarlo > ya arranca el proceso: > > popen = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True) > > Ahora por ejemplo podrías hacer popen.stdout.read(), pero esto de nuevo es > bloqueante. Como dices que estás con pygtk deberías mirarte: > > http://www.pygtk.org/pygtk2tutorial/sec-MonitoringIO.html > > Con esto deberías ser capaz de ir leyendo la salida de popen.stdout poco a > poco > (desde callbacks), y el bucle de eventos del GUI seguirá funcionando sin > problemas. > > arnau > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From jgomezdans en gmail.com Tue Jan 25 18:13:39 2011 From: jgomezdans en gmail.com (Jose Gomez-Dans) Date: Tue, 25 Jan 2011 17:13:39 +0000 Subject: [Python-es] duda con subprocess.Popen In-Reply-To: References: Message-ID: Hola, 2011/1/25 Tony Peña : > Hola estoy intentando probar el subprocess.Popen pero no entiendo bien como > funciona pq > > un ejemplo hipotetico si quisiera ejecutar un comando como ls -lhR / > yo ejecuto el comando con > > cmd = "ls -lhR /" > subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True).command()[0] > > y se me queda colgado o bloqueado el script hasta que no termine, > necesitaria ver com seria el ejemplo mas claro de lo que he visto en las > webs por ahi para poder salirme del proceso child y poder continuar con el > script valorando segun la salida de ese comando otras cuestiones... > alguna idea? Yo suelo utilizarlo bastante para monitorizar programas que necesitan una configuraición a través de por ejemplo stdin import subprocess p = subprocess.Popen( cmd, stdout = subprocess.PIPE, \ stdin=subprocess.PIPE ) p.stdin.write ( run_file ) while True: o = p.stdout.readline() if o == '' and p.poll() != None: break print o, # Imprime una línea de stdout del subproceso lanzado arriba Supongo que en vez del print o, tendrías algo que enlaza con tu GUI. No sé si te es útil... Saludos Jose From emperor.cu en gmail.com Tue Jan 25 18:29:58 2011 From: emperor.cu en gmail.com (=?ISO-8859-1?Q?Tony_Pe=F1a?=) Date: Tue, 25 Jan 2011 13:29:58 -0400 Subject: [Python-es] duda con subprocess.Popen In-Reply-To: References: Message-ID: gracias probare tmb de esa manera El 25 de enero de 2011 13:13, Jose Gomez-Dans escribió: > Hola, > > > 2011/1/25 Tony Peña : > > Hola estoy intentando probar el subprocess.Popen pero no entiendo bien > como > > funciona pq > > > > un ejemplo hipotetico si quisiera ejecutar un comando como ls -lhR / > > yo ejecuto el comando con > > > > cmd = "ls -lhR /" > > subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True).command()[0] > > > > y se me queda colgado o bloqueado el script hasta que no termine, > > necesitaria ver com seria el ejemplo mas claro de lo que he visto en las > > webs por ahi para poder salirme del proceso child y poder continuar con > el > > script valorando segun la salida de ese comando otras cuestiones... > > alguna idea? > > Yo suelo utilizarlo bastante para monitorizar programas que necesitan > una configuraición a través de por ejemplo stdin > > import subprocess > > p = subprocess.Popen( cmd, stdout = subprocess.PIPE, \ > stdin=subprocess.PIPE ) > p.stdin.write ( run_file ) > while True: > o = p.stdout.readline() > if o == '' and p.poll() != None: > break > print o, # Imprime una línea de stdout del subproceso lanzado arriba > > > Supongo que en vez del print o, tendrías algo que enlaza con tu GUI. > > No sé si te es útil... > > Saludos > Jose > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From pyarnau en gmail.com Tue Jan 25 18:33:09 2011 From: pyarnau en gmail.com (Arnau Sanchez) Date: Tue, 25 Jan 2011 18:33:09 +0100 Subject: [Python-es] duda con subprocess.Popen In-Reply-To: References: Message-ID: <20110125183309.2e284d9a@gmail.com> On Tue, 25 Jan 2011 17:13:39 +0000 Jose Gomez-Dans wrote: > p = subprocess.Popen( cmd, stdout = subprocess.PIPE, \ > stdin=subprocess.PIPE ) > p.stdin.write ( run_file ) > while True: > o = p.stdout.readline() > if o == '' and p.poll() != None: > break > print o, # Imprime una línea de stdout del subproceso lanzado arriba En esos casos iter() es bastante útil: popen = subprocess.Popen(cmd, stdout=subprocess.PIPE, stdin=subprocess.PIPE) popen.stdin.write(indata) for line in iter(popen.stdout.readline, ""): print line, Pero de todas formas él necesita esto para pygtk, así que no le sirve porque tiene que devolver el control al GUI inmediatamente o se queda congelado. From emperor.cu en gmail.com Tue Jan 25 19:44:41 2011 From: emperor.cu en gmail.com (=?ISO-8859-1?Q?Tony_Pe=F1a?=) Date: Tue, 25 Jan 2011 14:44:41 -0400 Subject: [Python-es] duda con subprocess.Popen In-Reply-To: <20110125183309.2e284d9a@gmail.com> References: <20110125183309.2e284d9a@gmail.com> Message-ID: exacto pq lo que ando buscando es que el cmd mientras me va sacando lo que esta haciendo a un fichero, yo necesito ir parseando ese fichero luego para otras cuestiones que por supuesto serian conectadas a un objeto para poder hacer alguna accion sobre el objeto como una barra de progreso por ejemplo,. El 25 de enero de 2011 13:33, Arnau Sanchez escribió: > On Tue, 25 Jan 2011 17:13:39 +0000 Jose Gomez-Dans wrote: > > > p = subprocess.Popen( cmd, stdout = subprocess.PIPE, \ > > stdin=subprocess.PIPE ) > > p.stdin.write ( run_file ) > > while True: > > o = p.stdout.readline() > > if o == '' and p.poll() != None: > > break > > print o, # Imprime una línea de stdout del subproceso lanzado > arriba > > En esos casos iter() es bastante útil: > > popen = subprocess.Popen(cmd, stdout=subprocess.PIPE, > stdin=subprocess.PIPE) > popen.stdin.write(indata) > for line in iter(popen.stdout.readline, ""): > print line, > > Pero de todas formas él necesita esto para pygtk, así que no le sirve > porque > tiene que devolver el control al GUI inmediatamente o se queda congelado. > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From emperor.cu en gmail.com Tue Jan 25 19:50:47 2011 From: emperor.cu en gmail.com (=?ISO-8859-1?Q?Tony_Pe=F1a?=) Date: Tue, 25 Jan 2011 14:50:47 -0400 Subject: [Python-es] duda con subprocess.Popen In-Reply-To: References: <20110125183309.2e284d9a@gmail.com> Message-ID: disculpen es el mismo correo pero ...... necesito ir parseando ese fichero _no_ luego _sino_ mientras lo va creando una onda como que en lo que se va desarrollando yo irle haciendo un tail -f al fichero que el subprocess(cmd) esta ejecutando...pero dentro de python para usarlo contra el objeto.... eso :) El 25 de enero de 2011 14:44, Tony Peña escribió: > exacto pq lo que ando buscando es que el cmd mientras me va sacando lo que > esta haciendo a un fichero, yo necesito ir parseando ese fichero luego para > otras cuestiones que por supuesto serian conectadas a un objeto para poder > hacer alguna accion sobre el objeto como una barra de progreso por ejemplo,. > > > > El 25 de enero de 2011 13:33, Arnau Sanchez escribió: > > On Tue, 25 Jan 2011 17:13:39 +0000 Jose Gomez-Dans wrote: >> >> > p = subprocess.Popen( cmd, stdout = subprocess.PIPE, \ >> > stdin=subprocess.PIPE ) >> > p.stdin.write ( run_file ) >> > while True: >> > o = p.stdout.readline() >> > if o == '' and p.poll() != None: >> > break >> > print o, # Imprime una línea de stdout del subproceso lanzado >> arriba >> >> En esos casos iter() es bastante útil: >> >> popen = subprocess.Popen(cmd, stdout=subprocess.PIPE, >> stdin=subprocess.PIPE) >> popen.stdin.write(indata) >> for line in iter(popen.stdout.readline, ""): >> print line, >> >> Pero de todas formas él necesita esto para pygtk, así que no le sirve >> porque >> tiene que devolver el control al GUI inmediatamente o se queda congelado. >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> > > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From dougjim en gmail.com Tue Jan 25 20:58:07 2011 From: dougjim en gmail.com (=?ISO-8859-1?Q?Douglas_Jim=E9nez?=) Date: Tue, 25 Jan 2011 15:28:07 -0430 Subject: [Python-es] =?iso-8859-1?q?=BFC=F3mo_manejo_los_caracteres_especi?= =?iso-8859-1?q?ales=3F?= In-Reply-To: References: Message-ID: El 21 de enero de 2011 19:02, Da?id escribió: > Hola. > > El comando coding sirve para definir la codificación de caracteres, y > debe ir en la primera o en la segunda línea. Este comando coding no lo consigo. ¿Me podrías dar un pequeño ejemplo de su uso? El asunto del manejo de los caracteres especiales es esencial a mi problema, pues justamente lo que intento hacer con mi programa es sustituirlos cada vez que aparezcan. Trabajo en Ubuntu, pero me gustaría escribir un programa lo menos independiente posible de la plataforma. También quisiera, por ejemplo, escribirlo en Windows para facilitar el módulo a algunos amigos que comparten código conmigo. Douglas. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From davidmenhur en gmail.com Tue Jan 25 22:44:55 2011 From: davidmenhur en gmail.com (=?UTF-8?B?RGHPgGlk?=) Date: Tue, 25 Jan 2011 22:44:55 +0100 Subject: [Python-es] =?iso-8859-1?q?=BFC=F3mo_manejo_los_caracteres_especi?= =?iso-8859-1?q?ales=3F?= In-Reply-To: References: Message-ID: 2011/1/25 Douglas Jiménez : > Este comando coding no lo consigo. ¿Me podrías dar un pequeño ejemplo de su > uso? # -*- coding: UTF8 -*- print 'Bienvenido a mi programa' La versión en Windows sería exactamente igual, pero tendrías que cambiar la primera línea: # -*- coding: 850 -*- print 'Bienvenido a mi programa' Si eso no te funciona, lo que puede ocurrir es que tu fichero de texto esté usando otra codificación. Estas codificaciones son las de la consola de salida. Ahora que lo recuerdo, cómo definir la codificación de lectura es una pregunta que le hice a mi profesora de programación, que tras investigación y preguntas me respondió que no había logrado averiguarlo. A nivel de fichero, veo que en Linux existe el comando recode. Quizá puedas adaptarlo y usarlo para recodificar el fichero a una codificación estándar y a partir de ahí pasarle tu programa. From gerardojuarez en buyteknet.info Wed Jan 26 01:56:11 2011 From: gerardojuarez en buyteknet.info (gerardo Juarez) Date: Tue, 25 Jan 2011 18:56:11 -0600 Subject: [Python-es] =?utf-8?q?=C2=BFC=C3=B3mo_manejo_los_caracteres_espec?= =?utf-8?q?iales=3F?= In-Reply-To: References: Message-ID: <4D3F712B.1020908@buyteknet.info> Douglas, Me parece probable también que el texto esté en una codificación que no es la misma que la del sistema. Por qué no intentas primero desde fuera de Python usar *file*, a ver qué tipo de archivo de dice que es. Después, podrías usar *iconv* para convertir el archivo, que podrías llamar programáticamente desde Python sin tener que revisarlo letra a letra. Gerardo Da?id wrote: > 2011/1/25 Douglas Jiménez : > >> Este comando coding no lo consigo. ¿Me podrías dar un pequeño ejemplo de su >> uso? >> > > # -*- coding: UTF8 -*- > > print 'Bienvenido a mi programa' > > > La versión en Windows sería exactamente igual, pero tendrías que > cambiar la primera línea: > > # -*- coding: 850 -*- > > print 'Bienvenido a mi programa' > > > > Si eso no te funciona, lo que puede ocurrir es que tu fichero de texto > esté usando otra codificación. Estas codificaciones son las de la > consola de salida. > > Ahora que lo recuerdo, cómo definir la codificación de lectura es una > pregunta que le hice a mi profesora de programación, que tras > investigación y preguntas me respondió que no había logrado > averiguarlo. > > A nivel de fichero, veo que en Linux existe el comando recode. Quizá > puedas adaptarlo y usarlo para recodificar el fichero a una > codificación estándar y a partir de ahí pasarle tu programa. > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > From emperor.cu en gmail.com Wed Jan 26 07:14:31 2011 From: emperor.cu en gmail.com (=?ISO-8859-1?Q?Tony_Pe=F1a?=) Date: Wed, 26 Jan 2011 01:14:31 -0500 Subject: [Python-es] dudas con regexp Message-ID: hola por aqui de nuevo ahora con las dudas para numeros en expresiones regulares result que quisiera coger los numeros que estan dentro de un fichero que parseo en un formato [0%] . . . [25%] . . . [100%] y el codigo para probar me salta el print no coincido con el patron para que funciones, lo probe tambien con re.search y tampoco for line in open(stdout, 'r').xreadlines(): lines = line.strip('\r\n') if lines == re.match(r'\[\d+\%\]', lines): print lines else: pass gracias por adelantado Tony ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From pau.cervera en gmail.com Wed Jan 26 07:32:49 2011 From: pau.cervera en gmail.com (Pau Cervera) Date: Wed, 26 Jan 2011 07:32:49 +0100 Subject: [Python-es] dudas con regexp In-Reply-To: References: Message-ID: El if será false siempre porque comparas un string con un match object. Entiendo que la regex está bien, cambia el if: if re.match(r'\[\d+\%\]', lines): ----- Pau Python..., what else? 2011/1/26 Tony Peña > hola por aqui de nuevo ahora con las dudas para numeros en expresiones > regulares > > result que quisiera coger los numeros que estan dentro de un fichero que > parseo en un formato > > [0%] > . > . > . > [25%] > . > . > . > [100%] > > y el codigo para probar me salta el print no coincido con el patron para > que funciones, lo probe tambien con re.search y tampoco > > for line in open(stdout, 'r').xreadlines(): > lines = line.strip('\r\n') > > if lines == re.match(r'\[\d+\%\]', lines): > print lines > else: > pass > > gracias por adelantado > > Tony > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From euribates en gmail.com Wed Jan 26 10:09:27 2011 From: euribates en gmail.com (Juan Ignacio) Date: Wed, 26 Jan 2011 09:09:27 +0000 Subject: [Python-es] dudas con regexp In-Reply-To: References: Message-ID: Si quieres recuperar el numero de forma fácil, agrúpalo: \[(\d+)\%\] PD: Creo que el % no hace falta escaparlo 2011/1/26 Pau Cervera : > El if será false siempre porque comparas un string con un match object. > Entiendo que la regex está bien, cambia el if: > > if re.match(r'\[\d+\%\]', lines): > > ----- > Pau > > Python..., what else? > > > 2011/1/26 Tony Peña >> >> hola por aqui de nuevo ahora con las dudas para numeros en expresiones >> regulares >> >> result que quisiera coger los numeros que estan dentro de un fichero que >> parseo en un formato >> >> [0%] >> . >> . >> . >> [25%] >> . >> . >> . >> [100%] >> >> y el codigo para probar me salta el print no coincido con el patron para >> que funciones, lo probe tambien con re.search y tampoco >> >>            for line in open(stdout, 'r').xreadlines(): >>                 lines = line.strip('\r\n') >> >>                 if lines == re.match(r'\[\d+\%\]', lines): >>                     print lines >>                 else: >>                     pass >> >> gracias por adelantado >> >> Tony >> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- Juan Ignacio Rodríguez de León Móvil: 605 890514 E-Mail: euribates en gmail.com http://www.metriz.com/ http://descon2.com/ http://www.elornitorrincoenmascarado.com/ From a.porrua en gmail.com Wed Jan 26 10:12:04 2011 From: a.porrua en gmail.com (tny) Date: Wed, 26 Jan 2011 10:12:04 +0100 Subject: [Python-es] duda con subprocess.Popen In-Reply-To: References: <20110125183309.2e284d9a@gmail.com> Message-ID: <1296033124.2082.9.camel@tny-desktop> El mar, 25-01-2011 a las 14:50 -0400, Tony Peña escribió: > disculpen es el mismo correo pero > > ...... necesito ir parseando ese fichero _no_ luego _sino_ mientras lo > va > creando una onda como que en lo que se va desarrollando yo irle > haciendo un > tail -f al fichero que el subprocess(cmd) esta ejecutando...pero > dentro de > python para usarlo contra el objeto.... > eso :) > Yo no usaría ls, yo lo haría desde python, en un proceso hijo que me escribiese en un socket AF_UNIX o en un pipe los datos que necesito según los va adquiriendo. La ventaja es que te evitas esperar por buffers, y también te evitas tener que parsear el texto, porque enviarías directamente un diccionario (o una tupla) serializado con pickle. From pych3m4 en gmail.com Wed Jan 26 10:34:23 2011 From: pych3m4 en gmail.com (Chema Cortes) Date: Wed, 26 Jan 2011 10:34:23 +0100 Subject: [Python-es] dudas con regexp In-Reply-To: References: Message-ID: El día 26 de enero de 2011 07:14, Tony Peña escribió: > y el codigo para probar me salta el print no coincido con el patron para que > funciones, lo probe tambien con re.search y tampoco > >            for line in open(stdout, 'r').xreadlines(): >                 lines = line.strip('\r\n') > >                 if lines == re.match(r'\[\d+\%\]', lines): >                     print lines >                 else: >                     pass Yo lo que veo raro es que quieras leer de 'stdout', normalmente de sólo escritura. ¿Podrías poner el código que falta? From emperor.cu en gmail.com Wed Jan 26 13:22:53 2011 From: emperor.cu en gmail.com (=?ISO-8859-1?Q?Tony_Pe=F1a?=) Date: Wed, 26 Jan 2011 07:22:53 -0500 Subject: [Python-es] duda con subprocess.Popen In-Reply-To: <1296033124.2082.9.camel@tny-desktop> References: <20110125183309.2e284d9a@gmail.com> <1296033124.2082.9.camel@tny-desktop> Message-ID: podrias poner un ejemplo claro? y corto para poder asociarlo a lo que tengo? gracias El 26 de enero de 2011 04:12, tny escribió: > El mar, 25-01-2011 a las 14:50 -0400, Tony Peña escribió: > > disculpen es el mismo correo pero > > > > ...... necesito ir parseando ese fichero _no_ luego _sino_ mientras lo > > va > > creando una onda como que en lo que se va desarrollando yo irle > > haciendo un > > tail -f al fichero que el subprocess(cmd) esta ejecutando...pero > > dentro de > > python para usarlo contra el objeto.... > > eso :) > > > > Yo no usaría ls, yo lo haría desde python, en un proceso hijo que me > escribiese en un socket AF_UNIX o en un pipe los datos que necesito > según los va adquiriendo. > La ventaja es que te evitas esperar por buffers, y también te evitas > tener que parsear el texto, porque enviarías directamente un diccionario > (o una tupla) serializado con pickle. > > > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From emperor.cu en gmail.com Wed Jan 26 13:38:17 2011 From: emperor.cu en gmail.com (=?ISO-8859-1?Q?Tony_Pe=F1a?=) Date: Wed, 26 Jan 2011 07:38:17 -0500 Subject: [Python-es] dudas con regexp In-Reply-To: References: Message-ID: gracias funciono con el if re.match directo El 26 de enero de 2011 04:34, Chema Cortes escribió: > El día 26 de enero de 2011 07:14, Tony Peña > escribió: > > > y el codigo para probar me salta el print no coincido con el patron para > que > > funciones, lo probe tambien con re.search y tampoco > > > > for line in open(stdout, 'r').xreadlines(): > > lines = line.strip('\r\n') > > > > if lines == re.match(r'\[\d+\%\]', lines): > > print lines > > else: > > pass > > Yo lo que veo raro es que quieras leer de 'stdout', normalmente de > sólo escritura. ¿Podrías poner el código que falta? > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From pyarnau en gmail.com Wed Jan 26 13:38:43 2011 From: pyarnau en gmail.com (Arnau Sanchez) Date: Wed, 26 Jan 2011 13:38:43 +0100 Subject: [Python-es] dudas con regexp In-Reply-To: References: Message-ID: <20110126133843.449f704d@gmail.com> On Wed, 26 Jan 2011 10:34:23 +0100 Chema Cortes wrote: > Yo lo que veo raro es que quieras leer de 'stdout', normalmente de > sólo escritura. ¿Podrías poner el código que falta? Así a palo seco queda feo, pero esto enlaza con su otra pregunta de subprocess, así que probablemente está leyendo de popen.stdout, lo que sí es correcto. From dougjim en gmail.com Wed Jan 26 14:31:52 2011 From: dougjim en gmail.com (=?ISO-8859-1?Q?Douglas_Jim=E9nez?=) Date: Wed, 26 Jan 2011 09:01:52 -0430 Subject: [Python-es] =?iso-8859-1?q?=BFC=F3mo_manejo_los_caracteres_especi?= =?iso-8859-1?q?ales=3F?= In-Reply-To: <4D3F712B.1020908@buyteknet.info> References: <4D3F712B.1020908@buyteknet.info> Message-ID: El 25 de enero de 2011 20:26, gerardo Juarez escribió: > Douglas, > > Me parece probable también que el texto esté en una codificación que no es > la misma que la del sistema. > Yo estaba siguiendo, sin saberlo, la sugerencia de David, pero con una codificación distinta a UTF8. La cambié tal como él me lo propuso y tampoco funcionó. > Por qué no intentas primero desde fuera de Python usar *file*, Esto lo hice y la línea obtenida fue: prueba: UTF-8 Unicode text lo que me hizo pensar que el problema pudiera estar en el guión de separación, el cual incluí. Tampoco me funcionó. > a ver qué tipo de archivo de dice que es. Después, > podrías usar *iconv* para convertir el archivo, que podrías llamar > programáticamente desde Python sin tener que > revisarlo letra a letra. > ¿Usaría "iconv" para convertirlo a qué codificación? Participo de la perplejidad de la profesora de David, pues tampoco consigo mucho material en la red respecto a este problema de las codificaciones. Confieso que en un principio pensé que era más fácil y por eso decidí estrenarme en Python con este problema. Repito que el programa no es difícil (al contrario: demasiado fácil) y ya verifiqué que corriera usando juegos de caracteres no problemáticos. Bueno... esto lo hace interesante. A propósito: ¿por qué funciona una cosa como # -*- coding: UTF8 -*-? Si el primer caracter de esta cadena es una orden de comentario, ¿cómo ejerce alguna influencia sobre el programa? Sigo agradeciendo cualquier ayuda o comentario respecto a este asunto. Saludos. Douglas. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From pablomarmol en gmail.com Wed Jan 26 14:51:19 2011 From: pablomarmol en gmail.com (peter) Date: Wed, 26 Jan 2011 14:51:19 +0100 Subject: [Python-es] =?iso-8859-1?q?=BFC=F3mo_manejo_los_caracteres_especi?= =?iso-8859-1?q?ales=3F?= In-Reply-To: References: <4D3F712B.1020908@buyteknet.info> Message-ID: El día 26 de enero de 2011 14:31, Douglas Jiménez escribió: > A propósito: ¿por qué funciona una cosa como # -*- coding: UTF8 -*-? Si el > primer caracter de esta cadena es una orden de comentario, ¿cómo ejerce > alguna influencia sobre el programa? > > Sigo agradeciendo cualquier ayuda o comentario respecto a este asunto. ¿No sabes por qué funciona esa linea -*- coding: utf-8 -*- aunque esté comentada con "#" ? Deberías probar a leer la documentación de python, te resultará interesante sobre todo si quieres programar en python. From dougjim en gmail.com Wed Jan 26 15:02:16 2011 From: dougjim en gmail.com (=?ISO-8859-1?Q?Douglas_Jim=E9nez?=) Date: Wed, 26 Jan 2011 09:32:16 -0430 Subject: [Python-es] =?iso-8859-1?q?=BFC=F3mo_manejo_los_caracteres_especi?= =?iso-8859-1?q?ales=3F?= In-Reply-To: References: <4D3F712B.1020908@buyteknet.info> Message-ID: El 26 de enero de 2011 09:21, peter escribió: > El día 26 de enero de 2011 14:31, Douglas Jiménez > escribió: > > > A propósito: ¿por qué funciona una cosa como # -*- coding: UTF8 -*-? Si > el > > primer caracter de esta cadena es una orden de comentario, ¿cómo ejerce > > alguna influencia sobre el programa? > > > > Sigo agradeciendo cualquier ayuda o comentario respecto a este asunto. > > > > ¿No sabes por qué funciona esa linea -*- coding: utf-8 -*- aunque > esté comentada con "#" ? > Deberías probar a leer la documentación de python, te resultará > interesante sobre todo si quieres programar en python. > ¡Seguro! Estoy en eso. ¿Por qué no eres más específico y me diriges hacia la lectura que debo hacer, una dirección o algo así? Uno va consiguiendo las cosas poco a poco y la estructura del sistema se hace evidente con la práctica. Si la tuviera de antemano, te aseguro que no molestaría a nadie preguntando. Gracias. Douglas. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From lesthack en gmail.com Wed Jan 26 17:02:37 2011 From: lesthack en gmail.com (lesthack) Date: Wed, 26 Jan 2011 10:02:37 -0600 Subject: [Python-es] =?iso-8859-1?q?Invitaci=F3n_Ponentes/Talleristas_FLIS?= =?iso-8859-1?q?OL_Celaya_=5BM=E9xico=5D?= Message-ID: El Festival Latinoamericano de Instalación de Software Libre (FLISOL) es un evento internacional que se celebra en distintos países de Latinoamerica incluyendo México, y este año, una vez mas, Celaya Guanajuato se une por 3ra vez consecutiva en las instalaciones del Instituto Tecnológico de Celaya. ¿ Deseas participar como Ponente/Tallerista en FLISOL Celaya ? Esta es una invitación abierta para todos los que quieran participar brindando una Conferencia o Taller en FLISOL Celaya, siempre y cuando cumplas con algunos pocos requisitos. Requisitos: * Vivir en México * Ser fiel seguidor de la Filosofía del Software Libre. * Pertenecer a alguna Comunidad (Team Developer de algún proyecto importante dentro de la comunidad del Software Libre). * Contar con temáticas relevantes en la actualidad del mundo del Software Libre. Si cumples con estos requisitos, enviamos la siguiente información. Sobre la Conferencia/Taller: * Nombre de la Conferencia o Taller a brindar. * Temática o tópico en la que se desenvuelve. * Nivel de la audiencia (Básico, Intermedio, Avanzado). * Tiempo (Duración en horas). Sobre tu persona: * Semblanza o biografía (Bien podría ser tu CV). * Actividad actual (Tanto en cuestiones laborales, como personales). * Proyectos Importantes (Fundador, Colaborador). * Lugar de Procedencia (Estado, Municipio, Institución o Empresa). Esperamos contar con tu participación, sabemos que dentro de la comunidad Python hay mucha gente con talento. Saludos !! From pych3m4 en gmail.com Wed Jan 26 18:51:33 2011 From: pych3m4 en gmail.com (Chema Cortes) Date: Wed, 26 Jan 2011 18:51:33 +0100 Subject: [Python-es] =?iso-8859-1?q?=BFC=F3mo_manejo_los_caracteres_especi?= =?iso-8859-1?q?ales=3F?= In-Reply-To: References: <4D3F712B.1020908@buyteknet.info> Message-ID: El día 26 de enero de 2011 15:02, Douglas Jiménez escribió: > ¡Seguro! Estoy en eso. ¿Por qué no eres más específico y me diriges hacia la > lectura que debo hacer, una dirección o algo así? Existe un completo "howto" sobre el tema que aclara bastantes cosas: http://docs.python.org/howto/unicode.html Tan sólo señalar que el comentario especial es tan sólo para indicar la codificación de los literales unicode que aparecen en el código (u"..."). No indica nada sobre la codificación de ficheros ni similar. Para saber cómo se debe leer ficheros codificados en utf8 (¡qué no unicode!) recomiendo leerse el howto anterior, la parte que habla del módulo codecs. From lasizoillo en gmail.com Wed Jan 26 18:54:18 2011 From: lasizoillo en gmail.com (lasizoillo) Date: Wed, 26 Jan 2011 18:54:18 +0100 Subject: [Python-es] =?utf-8?q?=C2=BFC=C3=B3mo_manejo_los_caracteres_espec?= =?utf-8?q?iales=3F?= In-Reply-To: References: <4D3F712B.1020908@buyteknet.info> Message-ID: El día 26 de enero de 2011 15:02, Douglas Jiménez escribió: > El 26 de enero de 2011 09:21, peter escribió: >> >> El día 26 de enero de 2011 14:31, Douglas Jiménez >> escribió: >> >> > A propósito: ¿por qué funciona una cosa como # -*- coding: UTF8 -*-? Si >> > el >> > primer caracter de esta cadena es una orden de comentario, ¿cómo ejerce >> > alguna influencia sobre el programa? >> > >> > Sigo agradeciendo cualquier ayuda o comentario respecto a este asunto. >> >> >> >> ¿No sabes por qué funciona esa linea  -*- coding: utf-8 -*-  aunque >> esté comentada con "#" ? >> Deberías probar a leer la documentación de python, te resultará >> interesante sobre todo si quieres programar en python. > > ¡Seguro! Estoy en eso. ¿Por qué no eres más específico y me diriges hacia la > lectura que debo hacer, una dirección o algo así? > > Uno va consiguiendo las cosas poco a poco y la estructura del sistema se > hace evidente con la práctica. Si la tuviera de antemano, te aseguro que no > molestaría a nadie preguntando. > Supongo que se referirá a esto: http://docs.python.org/howto/unicode La linea "# -*- coding: utf-8 -*-" le dice al intérprete de python en qué codificación de caracteres está el fichero fuente. Cuando defines el literal de una cadena: cadena = "Me tiene hasta el moño" Esa cadena está codificada de alguna manera (tal vez latin1, tal vez utf8, ...) y el intérprete de python debe saber cual es dicha codificación. Para simplicar el problema hay que pensar en abstracto. El modo texto se usa para comunicar. Y no basta con tener en cuenta el mensaje, sino que tienes que tener en cuenta al emisor y el receptor. Si el emisor manda un mensaje con una codificación, el receptor tiene que decoficar el mensaje usando dicha codificación. * Cuando escribes un programa python (tu eres el emisor), el codigo fuente es el mensaje y con el comentario raro ese el interprete (receptor) sabe como decoficiar el menaje (el código fuente). * Cuando imprimes un caracter en una pantalla. La pantalla o terminal estará configurado con cierta codificación. Si el mensaje no esta codificado de la misma manera fallará. * Cuando mandes un mail, puedes definir la codificación del mensaje en las cabeceras. Si tu programa (emisor) que envia el correo (mensaje) le dice al receptor (cliente de correo) como está codificado el mensaje, no deberías tener ningún problema. Puedo ponerte mil ejemplos de quien es el emisor, quien es el receptor y cuál es el mensaje, definiendo de forma correcta cual es la codificación de dicho mensaje. Pero una vez comprendas como funciona la abstracción, el problema del encoding desaparecerá por siempre. ¿Quién es tu emisor? ¿Cómo codifica el mensaje? ¿Quién es el receptor? ¿Cómo decodifica el mensaje? ¿El mensaje puede indicar al receptor cómo está codificado o debes poner de acuerdo al emisor y receptor de otra forma? ¿Tienes algún sistema de codificación común entre emisor y receptor o tienes aquí un problema? Respondiendo a estas preguntas, verás que sencillo es todo y si no es sencillo verás como se te ocurren formas de analizarlo y reparar el error ;-) Saludos: Javi From pych3m4 en gmail.com Wed Jan 26 19:36:02 2011 From: pych3m4 en gmail.com (Chema Cortes) Date: Wed, 26 Jan 2011 19:36:02 +0100 Subject: [Python-es] =?iso-8859-1?q?Manual_de_procedimientos_est=E1ndar?= In-Reply-To: References: Message-ID: El día 19 de enero de 2011 20:47, Douglas Jiménez escribió: > En este momento lo que quisiera de ustedes es que me recomendaran algún > manual en línea -lo más exhaustivo posible- que contenga listas de > procedimientos estándar. Por ejemplo, cuáles son los métodos disponibles > para manipular archivos: abrir, cerrar, copiar, eliminar, etc. Imagino que > debe haber una lista de objetos estándar cada uno de los cuales tiene sus > métodos propios. Me gustaría disponer de ella. Supongo que te servirán las "PQR" (Python Quick References) http://rgruet.free.fr/ Otras referencias rápidas sobre python: http://infohost.nmt.edu/tcc/help/pubs/python/web/ http://devcheatsheet.com/tag/python/ From kikocorreoso en gmail.com Wed Jan 26 19:47:55 2011 From: kikocorreoso en gmail.com (Kiko) Date: Wed, 26 Jan 2011 19:47:55 +0100 Subject: [Python-es] =?iso-8859-1?q?=BFC=F3mo_manejo_los_caracteres_especi?= =?iso-8859-1?q?ales=3F?= In-Reply-To: References: <4D3F712B.1020908@buyteknet.info> Message-ID: El 26 de enero de 2011 18:54, lasizoillo escribió: > El día 26 de enero de 2011 15:02, Douglas Jiménez > escribió: > > El 26 de enero de 2011 09:21, peter escribió: > >> > >> El día 26 de enero de 2011 14:31, Douglas Jiménez > >> escribió: > >> > >> > A propósito: ¿por qué funciona una cosa como # -*- coding: UTF8 -*-? > Si > >> > el > >> > primer caracter de esta cadena es una orden de comentario, ¿cómo > ejerce > >> > alguna influencia sobre el programa? > >> > > >> > Sigo agradeciendo cualquier ayuda o comentario respecto a este asunto. > >> > >> > >> > >> ¿No sabes por qué funciona esa linea -*- coding: utf-8 -*- aunque > >> esté comentada con "#" ? > >> Deberías probar a leer la documentación de python, te resultará > >> interesante sobre todo si quieres programar en python. > > > > ¡Seguro! Estoy en eso. ¿Por qué no eres más específico y me diriges hacia > la > > lectura que debo hacer, una dirección o algo así? > > > > Uno va consiguiendo las cosas poco a poco y la estructura del sistema se > > hace evidente con la práctica. Si la tuviera de antemano, te aseguro que > no > > molestaría a nadie preguntando. > > > > Supongo que se referirá a esto: > http://docs.python.org/howto/unicode > > La linea "# -*- coding: utf-8 -*-" le dice al intérprete de python en > qué codificación de caracteres está el fichero fuente. Cuando defines > el literal de una cadena: > cadena = "Me tiene hasta el moño" > Esa cadena está codificada de alguna manera (tal vez latin1, tal vez > utf8, ...) y el intérprete de python debe saber cual es dicha > codificación. > > Para simplicar el problema hay que pensar en abstracto. El modo texto > se usa para comunicar. Y no basta con tener en cuenta el mensaje, sino > que tienes que tener en cuenta al emisor y el receptor. Si el emisor > manda un mensaje con una codificación, el receptor tiene que decoficar > el mensaje usando dicha codificación. > * Cuando escribes un programa python (tu eres el emisor), el codigo > fuente es el mensaje y con el comentario raro ese el interprete > (receptor) sabe como decoficiar el menaje (el código fuente). > * Cuando imprimes un caracter en una pantalla. La pantalla o terminal > estará configurado con cierta codificación. Si el mensaje no esta > codificado de la misma manera fallará. > * Cuando mandes un mail, puedes definir la codificación del mensaje en > las cabeceras. Si tu programa (emisor) que envia el correo (mensaje) > le dice al receptor (cliente de correo) como está codificado el > mensaje, no deberías tener ningún problema. > > Puedo ponerte mil ejemplos de quien es el emisor, quien es el receptor > y cuál es el mensaje, definiendo de forma correcta cual es la > codificación de dicho mensaje. Pero una vez comprendas como funciona > la abstracción, el problema del encoding desaparecerá por siempre. > > ¿Quién es tu emisor? ¿Cómo codifica el mensaje? ¿Quién es el receptor? > ¿Cómo decodifica el mensaje? ¿El mensaje puede indicar al receptor > cómo está codificado o debes poner de acuerdo al emisor y receptor de > otra forma? ¿Tienes algún sistema de codificación común entre emisor y > receptor o tienes aquí un problema? Respondiendo a estas preguntas, > verás que sencillo es todo y si no es sencillo verás como se te > ocurren formas de analizarlo y reparar el error ;-) > > Saludos: > > Javi > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > Entre el enlace de Chema y la explicación de Javi uno nunca deja de aprender en esta lista. Muchas gracias. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From dougjim en gmail.com Wed Jan 26 20:47:36 2011 From: dougjim en gmail.com (=?ISO-8859-1?Q?Douglas_Jim=E9nez?=) Date: Wed, 26 Jan 2011 15:17:36 -0430 Subject: [Python-es] =?iso-8859-1?q?=BFC=F3mo_manejo_los_caracteres_especi?= =?iso-8859-1?q?ales=3F?= In-Reply-To: References: <4D3F712B.1020908@buyteknet.info> Message-ID: El 26 de enero de 2011 13:24, lasizoillo escribió: > El día 26 de enero de 2011 15:02, Douglas Jiménez > escribió: > > El 26 de enero de 2011 09:21, peter escribió: > >> > >> El día 26 de enero de 2011 14:31, Douglas Jiménez > >> escribió: > >> > >> > A propósito: ¿por qué funciona una cosa como # -*- coding: UTF8 -*-? > Si > >... > >> > >> ¿No sabes por qué funciona esa linea -... > > > > Supongo que se referirá a esto: > http://docs.python.org/howto/unicode > Pues... parece que aquí sí hay algo que puedo leer. Me tomaré la tarea de hacerlo y ojalá me resuelva el problema (positiva o negativamente). Gracias por tu sugerencia (y también a Chema que me hizo la misma). > > La linea "# -*- coding: utf-8 -*-" le dice al intérprete de python en > qué codificación de caracteres está el fichero fuente. Confieso (espero que no sea una especie de sacrilegio) que no sabía que se podían enviar mensajes de acción al intérprete. En realidad, tenía muchos años sin programar. Siempre había pensado que una línea de comentario comenzaba con un caracter particular que le decía al interprete (o compilador) que todo lo que estaba hasta el final de la línea no debía ser tomado en cuenta. > Cuando defines > el literal de una cadena:... > > Para simplicar el problema hay que pensar en abstracto. Gracias por tu resumen (¡muy inteligente!) de la teoría de Shannon. Me ayudó a comprender algunas partes filosas de mi problema. > ... Respondiendo a estas preguntas, > verás que sencillo es todo y si no es sencillo verás como se te > ocurren formas de analizarlo y reparar el error ;-) > Ojalá tenga yo la misma inteligencia para aplicarlo en la solución que intento implementar. > > Saludos: > Ídem. > > Javi > Douglas. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From kikocorreoso en gmail.com Wed Jan 26 21:09:12 2011 From: kikocorreoso en gmail.com (Kiko) Date: Wed, 26 Jan 2011 21:09:12 +0100 Subject: [Python-es] =?iso-8859-1?q?Manual_de_procedimientos_est=E1ndar?= In-Reply-To: References: Message-ID: El 26 de enero de 2011 19:36, Chema Cortes escribió: > El día 19 de enero de 2011 20:47, Douglas Jiménez > escribió: > > > En este momento lo que quisiera de ustedes es que me recomendaran algún > > manual en línea -lo más exhaustivo posible- que contenga listas de > > procedimientos estándar. Por ejemplo, cuáles son los métodos disponibles > > para manipular archivos: abrir, cerrar, copiar, eliminar, etc. Imagino > que > > debe haber una lista de objetos estándar cada uno de los cuales tiene sus > > métodos propios. Me gustaría disponer de ella. > > Supongo que te servirán las "PQR" (Python Quick References) > > http://rgruet.free.fr/ > > Otras referencias rápidas sobre python: > > http://infohost.nmt.edu/tcc/help/pubs/python/web/ > http://devcheatsheet.com/tag/python/ > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > Leo en [1] que han recopilado las preguntas más interesantes en stackoverflow de diferentes categorías, entre ellas python [1]. Quizá ahí encuentres algo interesante y rápido para lo que necesitas. [1] http://mundogeek.net/archivos/2011/01/24/lecturas-para-la-semana/ [2] http://hewgill.com/~greg/stackoverflow/ebooks/stack_overflow_python.mobi ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From dougjim en gmail.com Wed Jan 26 21:23:24 2011 From: dougjim en gmail.com (=?ISO-8859-1?Q?Douglas_Jim=E9nez?=) Date: Wed, 26 Jan 2011 15:53:24 -0430 Subject: [Python-es] =?iso-8859-1?q?Manual_de_procedimientos_est=E1ndar?= In-Reply-To: References: Message-ID: El 26 de enero de 2011 14:06, Chema Cortes escribió: > El día 19 de enero de 2011 20:47, Douglas Jiménez > escribió: > > ... > > Supongo que te servirán las "PQR" (Python Quick References) > > http://rgruet.free.fr/ > ¡Gracias! Las acabo de colocar Mis favoritos. D. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From davidmenhur en gmail.com Thu Jan 27 00:25:11 2011 From: davidmenhur en gmail.com (=?UTF-8?B?RGHPgGlk?=) Date: Thu, 27 Jan 2011 00:25:11 +0100 Subject: [Python-es] =?iso-8859-1?q?=BFC=F3mo_manejo_los_caracteres_especi?= =?iso-8859-1?q?ales=3F?= In-Reply-To: References: <4D3F712B.1020908@buyteknet.info> Message-ID: 2011/1/26 Douglas Jiménez : > Confieso (espero que no sea una especie de sacrilegio) que no sabía que se > podían enviar mensajes de acción al intérprete. En realidad, tenía muchos > años sin programar. Siempre había pensado que una línea de comentario > comenzaba con un caracter particular que le decía al interprete (o > compilador) que todo lo que estaba hasta el final de la línea no debía ser > tomado en cuenta. Ignoro si hay más casos, pero el encode es una orden bastante especial. De hecho, no puede ir en cualquier sitio, sino que sólo es válido en la primera o segunda línea del programa. From a.porrua en gmail.com Thu Jan 27 11:29:53 2011 From: a.porrua en gmail.com (tny) Date: Thu, 27 Jan 2011 11:29:53 +0100 Subject: [Python-es] duda con subprocess.Popen In-Reply-To: References: <20110125183309.2e284d9a@gmail.com> <1296033124.2082.9.camel@tny-desktop> Message-ID: <1296124193.2178.29.camel@tny-desktop> El problema es que yo uso mi propia librería de procesos basada en eventos, y aún no la tengo integrada con el sistema de eventos de pygtk. En tu caso y pensandolo mejor no necesitas otro proceso, y además hacerlo a pelo sería demasiado complicado. Con un trhead es suficiente y no necesitas ni sockets ni serializar los datos. Para el hilo http://docs.python.org/library/threading.html#thread-objects Para recorrer los directorios http://docs.python.org/library/os.html#os.walk Para recojer lo datos que necesites (fecha, tamaño, propietario...) http://docs.python.org/library/os.path.html Para pasar los datos del thread que recore los directorios al thread principal no hay que hacer muchos malabarismos: - Puedes o bien usar directamente la lista, el diccionario o el objeto que sea, con la única precaución de utilizar locks en donde sea necesario. Por ejemplo que un thread modifique una lista mientras otro thread esta iterándola puede ser peligroso. - Más fácil aún pues te evitas cualquier problema de estos, es que el thread hijo provoque un evento que el thread padre procesará cuando le toque. De modo que sólo es el proceso padre el que accede a dicho diccionario, lista o lo que sea. Siento no serte de mayor ayuda. Hace mucho que no toco threads ni pygtk. El mié, 26-01-2011 a las 07:22 -0500, Tony Peña escribió: > podrias poner un ejemplo claro? y corto para poder asociarlo a lo que > tengo? > > gracias > > El 26 de enero de 2011 04:12, tny escribió: > > > El mar, 25-01-2011 a las 14:50 -0400, Tony Peña escribió: > > > disculpen es el mismo correo pero > > > > > > ...... necesito ir parseando ese fichero _no_ luego _sino_ > mientras lo > > > va > > > creando una onda como que en lo que se va desarrollando yo irle > > > haciendo un > > > tail -f al fichero que el subprocess(cmd) esta ejecutando...pero > > > dentro de > > > python para usarlo contra el objeto.... > > > eso :) > > > > > > > Yo no usaría ls, yo lo haría desde python, en un proceso hijo que me > > escribiese en un socket AF_UNIX o en un pipe los datos que necesito > > según los va adquiriendo. > > La ventaja es que te evitas esperar por buffers, y también te evitas > > tener que parsear el texto, porque enviarías directamente un > diccionario > > (o una tupla) serializado con pickle. > > From dougjim en gmail.com Thu Jan 27 13:20:09 2011 From: dougjim en gmail.com (=?ISO-8859-1?Q?Douglas_Jim=E9nez?=) Date: Thu, 27 Jan 2011 07:50:09 -0430 Subject: [Python-es] =?iso-8859-1?q?=BFC=F3mo_manejo_los_caracteres_especi?= =?iso-8859-1?q?ales=3F?= In-Reply-To: References: <4D3F712B.1020908@buyteknet.info> Message-ID: El 26 de enero de 2011 18:55, Da?id escribió: > 2011/1/26 Douglas Jiménez : > > Confieso (espero que no sea una especie de sacrilegio) que no sabía que > se > > podían enviar mensajes de acción al intérprete. En realidad, tenía muchos > > años sin programar. Siempre había pensado que una línea de comentario > > comenzaba con un caracter particular que le decía al interprete (o > > compilador) que todo lo que estaba hasta el final de la línea no debía > ser > > tomado en cuenta. > > Ignoro si hay más casos, pero el encode es una orden bastante > especial. De hecho, no puede ir en cualquier sitio, sino que sólo es > válido en la primera o segunda línea del programa. > Creo que en alguna parte lo leí como "magic comment" D. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From emperor.cu en gmail.com Thu Jan 27 16:13:43 2011 From: emperor.cu en gmail.com (=?ISO-8859-1?Q?Tony_Pe=F1a?=) Date: Thu, 27 Jan 2011 10:13:43 -0500 Subject: [Python-es] duda con subprocess.Popen In-Reply-To: <1296124193.2178.29.camel@tny-desktop> References: <20110125183309.2e284d9a@gmail.com> <1296033124.2082.9.camel@tny-desktop> <1296124193.2178.29.camel@tny-desktop> Message-ID: vale, ya andaba por thread a ver si me resultaba pero estube pensando tambien otra opcion que quizas sea otra via es que: podria abrir el fichero antes de ejecutar el proceso y ponerle un seek(0) como posicion inicial, ejecutar con el thread el proceso, y mientras esta escribiendo el seek comience a ir parseando y hacer un recorrido hasta donde se vaya creando mientras se parsea como 2das cosas que debe hacer, y luego seguir recorriendo el fichero con el mismo seek eso podria resolver tambien? vaya es algo tan sencillo como cualquiera que manda a hacer algo en bash y le mande la salida a un log y por otro lado este el tail -f mirando el log que se ve como avanza cuando sucede algo y sino se queda esperando hasta que le pasen el Ctrl C entiendes? bueno eso mismo pero en python saludos El 27 de enero de 2011 05:29, tny escribió: > El problema es que yo uso mi propia librería de procesos basada en > eventos, y aún no la tengo integrada con el sistema de eventos de pygtk. > > En tu caso y pensandolo mejor no necesitas otro proceso, y además > hacerlo a pelo sería demasiado complicado. > Con un trhead es suficiente y no necesitas ni sockets ni serializar los > datos. > > Para el hilo > http://docs.python.org/library/threading.html#thread-objects > > Para recorrer los directorios > http://docs.python.org/library/os.html#os.walk > > Para recojer lo datos que necesites (fecha, tamaño, propietario...) > http://docs.python.org/library/os.path.html > > Para pasar los datos del thread que recore los directorios al thread > principal no hay que hacer muchos malabarismos: > - Puedes o bien usar directamente la lista, el diccionario o el objeto > que sea, con la única precaución de utilizar locks en donde sea > necesario. > Por ejemplo que un thread modifique una lista mientras otro thread esta > iterándola puede ser peligroso. > - Más fácil aún pues te evitas cualquier problema de estos, es que el > thread hijo provoque un evento que el thread padre procesará cuando le > toque. De modo que sólo es el proceso padre el que accede a dicho > diccionario, lista o lo que sea. > > Siento no serte de mayor ayuda. > Hace mucho que no toco threads ni pygtk. > > > > El mié, 26-01-2011 a las 07:22 -0500, Tony Peña escribió: > > podrias poner un ejemplo claro? y corto para poder asociarlo a lo que > > tengo? > > > > gracias > > > > El 26 de enero de 2011 04:12, tny escribió: > > > > > El mar, 25-01-2011 a las 14:50 -0400, Tony Peña escribió: > > > > disculpen es el mismo correo pero > > > > > > > > ...... necesito ir parseando ese fichero _no_ luego _sino_ > > mientras lo > > > > va > > > > creando una onda como que en lo que se va desarrollando yo irle > > > > haciendo un > > > > tail -f al fichero que el subprocess(cmd) esta ejecutando...pero > > > > dentro de > > > > python para usarlo contra el objeto.... > > > > eso :) > > > > > > > > > > Yo no usaría ls, yo lo haría desde python, en un proceso hijo que me > > > escribiese en un socket AF_UNIX o en un pipe los datos que necesito > > > según los va adquiriendo. > > > La ventaja es que te evitas esperar por buffers, y también te evitas > > > tener que parsear el texto, porque enviarías directamente un > > diccionario > > > (o una tupla) serializado con pickle. > > > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From chakalinux en gmail.com Thu Jan 27 18:27:09 2011 From: chakalinux en gmail.com (chakalinux) Date: Thu, 27 Jan 2011 18:27:09 +0100 Subject: [Python-es] regex Message-ID: Hola, intento buscar palabras en una cadena usando regexp, a ver si me explico, si tengo por ejemplo esta cadena: cad = u"hola como están" Quiero que me re me encuentre la cadena cad (puede variar) independientemente de su posición, (creo que se llama lookahead), o sea: "como estan ustedes hola" => true "hola, ustedes estan bien ? como están" => true [...] Solo he llegado a esto: re.match("(?=.*hola)(?=.*como)(?=.*est.n)", cad) Esto me funciona pero no me interesa ya que me devuelve siempre true aunque ponga: "hola como estan" y si quito ".*" no me funciona y solo me interesa que encuentra las palabras exactas independientemente del orden que estén. ... Un saludo ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From jcaballero.hep en gmail.com Thu Jan 27 19:06:37 2011 From: jcaballero.hep en gmail.com (Jose Caballero) Date: Thu, 27 Jan 2011 13:06:37 -0500 Subject: [Python-es] regex In-Reply-To: References: Message-ID: El 27 de enero de 2011 12:27, chakalinux escribió: > Hola, intento buscar palabras en una cadena usando regexp, a ver si me > explico, si tengo por ejemplo esta cadena: > > cad = u"hola como están" > > Quiero que me re me encuentre la cadena cad (puede variar) > independientemente de su posición, (creo que se llama lookahead), o sea: > > "como estan ustedes hola" => true > "hola, ustedes estan bien ? como están" => true > [...] > > Solo he llegado a esto: > > re.match("(?=.*hola)(?=.*como)(?=.*est.n)", cad) > > Esto me funciona pero no me interesa ya que me devuelve siempre true aunque > ponga: "hola como estan" y si quito ".*" no me funciona y > solo me interesa que encuentra las palabras exactas independientemente del > orden que estén. > > ... > > No he entendido nada. A ver si me aclaro... Tienes una cadena inicial, por ejemplo c1="hola como estan". Luego tienes una segunda cadena c2. Y ahora quieres ... (1) saber is c1 es parte de c2. (2) saber si todas las palabras de c1 estan en c2. (3) saber si alguna de las palabras de c1 esta en c2. (4)... ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From pych3m4 en gmail.com Thu Jan 27 19:53:50 2011 From: pych3m4 en gmail.com (Chema Cortes) Date: Thu, 27 Jan 2011 19:53:50 +0100 Subject: [Python-es] regex In-Reply-To: References: Message-ID: El día 27 de enero de 2011 18:27, chakalinux escribió: > Hola, intento buscar palabras en una cadena usando regexp, a ver si me > explico, si tengo por ejemplo esta cadena: > > cad = u"hola como están" > > Quiero que me re me encuentre la cadena cad (puede variar) > independientemente de su posición, (creo que se llama lookahead), o sea: > > "como estan ustedes hola" => true > "hola, ustedes estan bien ? como están" => true > [...] > > Solo he llegado a esto: > > re.match("(?=.*hola)(?=.*como)(?=.*est.n)", cad) > > Esto me funciona pero no me interesa ya que me devuelve siempre true aunque > ponga: "hola como estan" y si quito ".*" no me funciona y > solo me interesa que encuentra las palabras exactas independientemente del > orden que estén. No entiendo bien qué problema planteas. El "lookahead" ("ver adelante") sirve para vincular un patrón de búsqueda con lo que aparece más adelante en la cadena. En realidad en el patrón de búsqueda que propones no indicas qué tiene que buscar (los "lookahead" no seleccionan nada). Si tienes las cosas claras, puede que el módulo 're' sirva para tus propósitos, pero a veces es mejor no obsesionarse con ello y tratar de hacerte tus propias búsquedas a medida. Otra forma de verlo es descomponiendo el problema en procesos más sencillos, tal vez concatenando dos búsquedas. From gerardojuarez en buyteknet.info Thu Jan 27 20:30:58 2011 From: gerardojuarez en buyteknet.info (gerardo Juarez) Date: Thu, 27 Jan 2011 13:30:58 -0600 Subject: [Python-es] regex In-Reply-To: References: Message-ID: <4D41C7F2.1040503@buyteknet.info> Hola, Entiendo que quieres buscar que todas las palabras de la cadena estén presentes, en cualquier orden, por lo menos una vez. Si esto es correcto, no te convendría mejor separar estas palabras y buscarlas una por una? Una expresión regular para esto, especialmente *si pueden cambiar de orden* me parece que sería algo rebuscado, si es que es posible (no se me ocurre como de momento). Algo así como: # s es la cadena a probar; cad contiene las palabras a buscar en 's'. s = "xxxxx" for p in cad.split(): if not s.find(p): return 'no-match' # si llega aqui, encontró todas las palabras de la lista return 'match' Lo simple del código me sugiere que podría ser la solución más correcta y transparente. Gerardo chakalinux wrote: > Hola, intento buscar palabras en una cadena usando regexp, a ver si me > explico, si tengo por ejemplo esta cadena: > > cad = u"hola como están" > > Quiero que me re me encuentre la cadena cad (puede variar) > independientemente de su posición, (creo que se llama lookahead), o sea: > > "como estan ustedes hola" => true > "hola, ustedes estan bien ? como están" => true > [...] > > Solo he llegado a esto: > > re.match("(?=.*hola)(?=.*como)(?=.*est.n)", cad) > > Esto me funciona pero no me interesa ya que me devuelve siempre true > aunque ponga: "hola como estan" y si quito ".*" no > me funciona y solo me interesa que encuentra las palabras exactas > independientemente del orden que estén. > > ... > > > Un saludo > ------------------------------------------------------------------------ > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > From chakalinux en gmail.com Thu Jan 27 21:28:03 2011 From: chakalinux en gmail.com (chakalinux) Date: Thu, 27 Jan 2011 21:28:03 +0100 Subject: [Python-es] regex In-Reply-To: References: Message-ID: No lo tengo claro si es lookahead o no, el tema es buscar palabras independientemente del orden que aparezcan Replanteo la pregunta: ¿ Hay alguna manera usando (regex o no) para que localice la cadena independientemente del orden ? Se me ocurre algo como: msg="hola gente, ubuntu esta bien. Alguien me puede decir que es?" patron="que es ubuntu" Comprueba(msg, patron) def Comprueba(msg, patron): for word in patron.split(): if msg.find(word) == -1: return False return True Un saludo El 27 de enero de 2011 19:53, Chema Cortes escribió: > El día 27 de enero de 2011 18:27, chakalinux > escribió: > > Hola, intento buscar palabras en una cadena usando regexp, a ver si me > > explico, si tengo por ejemplo esta cadena: > > > > cad = u"hola como están" > > > > Quiero que me re me encuentre la cadena cad (puede variar) > > independientemente de su posición, (creo que se llama lookahead), o sea: > > > > "como estan ustedes hola" => true > > "hola, ustedes estan bien ? como están" => true > > [...] > > > > Solo he llegado a esto: > > > > re.match("(?=.*hola)(?=.*como)(?=.*est.n)", cad) > > > > Esto me funciona pero no me interesa ya que me devuelve siempre true > aunque > > ponga: "hola como estan" y si quito ".*" no me funciona > y > > solo me interesa que encuentra las palabras exactas independientemente > del > > orden que estén. > > No entiendo bien qué problema planteas. El "lookahead" ("ver > adelante") sirve para vincular un patrón de búsqueda con lo que > aparece más adelante en la cadena. En realidad en el patrón de > búsqueda que propones no indicas qué tiene que buscar (los "lookahead" > no seleccionan nada). > > Si tienes las cosas claras, puede que el módulo 're' sirva para tus > propósitos, pero a veces es mejor no obsesionarse con ello y tratar de > hacerte tus propias búsquedas a medida. Otra forma de verlo es > descomponiendo el problema en procesos más sencillos, tal vez > concatenando dos búsquedas. > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From chakalinux en gmail.com Thu Jan 27 22:14:07 2011 From: chakalinux en gmail.com (chakalinux) Date: Thu, 27 Jan 2011 22:14:07 +0100 Subject: [Python-es] regex In-Reply-To: References: Message-ID: Tan mal me explico ? a ver. quería buscar una cadena teniendo en cuenta unos patrones, los patrones pueden variar su orden (a, b, c OR b, c, a OR c, b ,a [...]) peor ya lo he resuelto. Es un programa para el irc que conecta a una base de datos sqlite3 y responde según la pregunta, por ejemplo: pepito: Que es ubuntu? bot: pepito, http://es.wikipedia.org/wiki/Ubuntu La respuesta del bot es automática, en este caso los patrones son: "que es ubuntu", si el usuario pepito hubiera preguntado: pepito: ubuntu ... y eso que es ? La respuesta sería la misma, a eso me refería antes con independientemente del orden buscar la cadena. La función es esta: def SearchQuestion(name): cnn = sqlite3.connect("db/profe.db") pexc = cnn.cursor() patron, msg = pexc.execute(u'SELECT patron, respuesta FROM profe;').fetchone() cnn.close() name = name.rstrip("?").rstrip("¿") cicle = False if patron: for word in patron.split(): for word2 in name.split(): if word2 == word: cicle = True break if not cicle:return None cicle = False return msg return None Un saludo y perdona si no me explique correctamente. El 27 de enero de 2011 19:06, Jose Caballero escribió: > > > El 27 de enero de 2011 12:27, chakalinux escribió: > > Hola, intento buscar palabras en una cadena usando regexp, a ver si me >> explico, si tengo por ejemplo esta cadena: >> >> cad = u"hola como están" >> >> Quiero que me re me encuentre la cadena cad (puede variar) >> independientemente de su posición, (creo que se llama lookahead), o sea: >> >> "como estan ustedes hola" => true >> "hola, ustedes estan bien ? como están" => true >> [...] >> >> Solo he llegado a esto: >> >> re.match("(?=.*hola)(?=.*como)(?=.*est.n)", cad) >> >> Esto me funciona pero no me interesa ya que me devuelve siempre true >> aunque ponga: "hola como estan" y si quito ".*" no me >> funciona y solo me interesa que encuentra las palabras exactas >> independientemente del orden que estén. >> >> ... >> >> > > No he entendido nada. > > A ver si me aclaro... > > Tienes una cadena inicial, por ejemplo c1="hola como estan". > Luego tienes una segunda cadena c2. > Y ahora quieres ... > > (1) saber is c1 es parte de c2. > (2) saber si todas las palabras de c1 estan en c2. > (3) saber si alguna de las palabras de c1 esta en c2. > (4)... > > > > > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From lasizoillo en gmail.com Thu Jan 27 23:24:02 2011 From: lasizoillo en gmail.com (lasizoillo) Date: Thu, 27 Jan 2011 23:24:02 +0100 Subject: [Python-es] regex In-Reply-To: References: Message-ID: El día 27 de enero de 2011 22:14, chakalinux escribió: > Tan mal me explico ? a ver. quería buscar una cadena teniendo en cuenta unos > patrones, los patrones pueden variar su orden (a, b, c OR b, c, a OR c, b ,a > [...]) peor ya lo he resuelto. > > Es un programa para el irc que conecta a una base de datos sqlite3 y > responde según la pregunta, por ejemplo: > > pepito: Que es ubuntu? > bot: pepito, http://es.wikipedia.org/wiki/Ubuntu > > La respuesta del bot es automática, en este caso los patrones son: "que es > ubuntu", si el usuario pepito hubiera preguntado: > > pepito: ubuntu ... y eso que es ? > linux_boy: creo que ubuntu es la mejor distro para empezar bot: linux_boy, http://es.wikipedia.org/wiki/Ubuntu linux_boy: tiovivo, con ubuntu no pasaría tiovivo: eso que es? linux_boy: tiovivo, mira en http://es.wikipedia.org/wiki/Ubuntu El algoritmo que propones va a fallar con falsos positivos (primer ejemplo) y falsos negativos (segundo ejemplo). La gran ventaja es que es muy simple. Si te interesa el tema del procesamiento del lenguaje natural puedes echarle un vistazo al libro del nltk: http://www.nltk.org/book Para implementar tu algoritmo yo usaría sets. Es facil con ellas ver si un conjunto de palabras (ubuntu, que, es) está contenido en el conjunto de palabras del mensaje de IRC. Saludos: Javi From a.porrua en gmail.com Fri Jan 28 10:44:46 2011 From: a.porrua en gmail.com (tny) Date: Fri, 28 Jan 2011 10:44:46 +0100 Subject: [Python-es] duda con subprocess.Popen In-Reply-To: References: <20110125183309.2e284d9a@gmail.com> <1296033124.2082.9.camel@tny-desktop> <1296124193.2178.29.camel@tny-desktop> Message-ID: <1296207886.2151.15.camel@tny-desktop> Además de threads y process también hay programación asíncrona. Si lo vas a hacer con el comando, yo creo que lo mejor es usar io_add_watch como ya te han recomendado: www.pygtk.org/pygtk2tutorial/sec-MonitoringIO.html De este modo el propio gestor de eventos de pygtk se encarga de llamar a tu función cada vez que haya datos que leer en stdout No necesitas más que definir la función, crear el subproceso, y asignar dicha función como callback del stdout del subproceso, y el gtk.main() se encarga de todo. Por si no andas fino con el inglés te lo traduzco-resumo source_id = gobject.io_add_watch(source, condition, callback) source es el fileno del stdout subprocess condition es gobject.IO_IN (porque quieres leer) callback es la función que se encargará de leer cuando haya datos que leer la función callback sera del estido de def input_callback(source, condition): donde source es el fileno del stdout del subprocess y a condition puedes ignorarle, pues en tu caso siempre sera IO_IN OJO debes devolver True para que callback sea llamado la próxima vez que lleguen datos a stdout. Y no hace falta andar con seeks ni nada, puesto que stdout es un pipe, una vez que lees los datos desaparecen. El jue, 27-01-2011 a las 10:13 -0500, Tony Peña escribió: > vale, ya andaba por thread a ver si me resultaba pero estube pensando > tambien otra opcion que quizas sea otra via es que: > > podria abrir el fichero antes de ejecutar el proceso y ponerle un > seek(0) > como posicion inicial, ejecutar con el thread el proceso, y mientras > esta > escribiendo el seek comience a ir parseando > y hacer un recorrido hasta donde se vaya creando mientras se parsea > como > 2das cosas que debe hacer, y luego seguir recorriendo el fichero > con el mismo seek > eso podria resolver tambien? > > vaya es algo tan sencillo como cualquiera que manda a hacer algo en > bash y > le mande la salida a un log y por otro lado este el tail -f mirando el > log > que se ve como avanza cuando sucede algo y sino se queda esperando > hasta que > le pasen el Ctrl C entiendes? > > bueno eso mismo pero en python > > saludos From emperor.cu en gmail.com Fri Jan 28 14:24:34 2011 From: emperor.cu en gmail.com (=?ISO-8859-1?Q?Tony_Pe=F1a?=) Date: Fri, 28 Jan 2011 08:54:34 -0430 Subject: [Python-es] duda con subprocess.Popen In-Reply-To: <1296207886.2151.15.camel@tny-desktop> References: <20110125183309.2e284d9a@gmail.com> <1296033124.2082.9.camel@tny-desktop> <1296124193.2178.29.camel@tny-desktop> <1296207886.2151.15.camel@tny-desktop> Message-ID: ok vale intentare entonces por ahi que es donde mas corto sera el viaje entonces cualquier cosa les comento un abrazo El 28 de enero de 2011 05:14, tny escribió: > Además de threads y process también hay programación asíncrona. > > Si lo vas a hacer con el comando, yo creo que lo mejor es usar > io_add_watch como ya te han recomendado: > www.pygtk.org/pygtk2tutorial/sec-MonitoringIO.html > De este modo el propio gestor de eventos de pygtk se encarga de llamar a > tu función cada vez que haya datos que leer en stdout > > No necesitas más que definir la función, crear el subproceso, y asignar > dicha función como callback del stdout del subproceso, y el gtk.main() > se encarga de todo. > > > Por si no andas fino con el inglés te lo traduzco-resumo > > source_id = gobject.io_add_watch(source, condition, callback) > > source es el fileno del stdout subprocess > condition es gobject.IO_IN (porque quieres leer) > callback es la función que se encargará de leer cuando haya datos que > leer > > la función callback sera del estido de > def input_callback(source, condition): > > donde source es el fileno del stdout del subprocess > y a condition puedes ignorarle, pues en tu caso siempre sera IO_IN > OJO debes devolver True para que callback sea llamado la próxima vez que > lleguen datos a stdout. > Y no hace falta andar con seeks ni nada, puesto que stdout es un pipe, > una vez que lees los datos desaparecen. > > > El jue, 27-01-2011 a las 10:13 -0500, Tony Peña escribió: > > vale, ya andaba por thread a ver si me resultaba pero estube pensando > > tambien otra opcion que quizas sea otra via es que: > > > > podria abrir el fichero antes de ejecutar el proceso y ponerle un > > seek(0) > > como posicion inicial, ejecutar con el thread el proceso, y mientras > > esta > > escribiendo el seek comience a ir parseando > > y hacer un recorrido hasta donde se vaya creando mientras se parsea > > como > > 2das cosas que debe hacer, y luego seguir recorriendo el fichero > > con el mismo seek > > eso podria resolver tambien? > > > > vaya es algo tan sencillo como cualquiera que manda a hacer algo en > > bash y > > le mande la salida a un log y por otro lado este el tail -f mirando el > > log > > que se ve como avanza cuando sucede algo y sino se queda esperando > > hasta que > > le pasen el Ctrl C entiendes? > > > > bueno eso mismo pero en python > > > > saludos > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From matt en fifthbiz.com Fri Jan 28 17:26:00 2011 From: matt en fifthbiz.com (matt ledding) Date: Fri, 28 Jan 2011 17:26:00 +0100 Subject: [Python-es] regex In-Reply-To: References: Message-ID: +1 x nltk.org/book ... sino, por un bot mas sencilla, hay AIML (Artificial Intelligence Markup Language), pero sobre todo reversedAIML (http://charlix.sourceforge.net/)que tiene otros ideas interesantes. Puedes crear patrones (ie: "eso que es"="que es" antes de substantivo precedente.) http://pyaiml.sourceforge.net existe como compilidor de AIML, y http://howie.sourceforge.net/ es un opensource AIML chatbot en python si quieres ver ideas de codigo. Todos en inglés, por cierto... Matt 2011/1/27 lasizoillo > El día 27 de enero de 2011 22:14, chakalinux > escribió: > > Tan mal me explico ? a ver. quería buscar una cadena teniendo en cuenta > unos > > patrones, los patrones pueden variar su orden (a, b, c OR b, c, a OR c, b > ,a > > [...]) peor ya lo he resuelto. > > > > Es un programa para el irc que conecta a una base de datos sqlite3 y > > responde según la pregunta, por ejemplo: > > > > pepito: Que es ubuntu? > > bot: pepito, http://es.wikipedia.org/wiki/Ubuntu > > > > La respuesta del bot es automática, en este caso los patrones son: "que > es > > ubuntu", si el usuario pepito hubiera preguntado: > > > > pepito: ubuntu ... y eso que es ? > > > > linux_boy: creo que ubuntu es la mejor distro para empezar > bot: linux_boy, http://es.wikipedia.org/wiki/Ubuntu > > linux_boy: tiovivo, con ubuntu no pasaría > tiovivo: eso que es? > linux_boy: tiovivo, mira en http://es.wikipedia.org/wiki/Ubuntu > > El algoritmo que propones va a fallar con falsos positivos (primer > ejemplo) y falsos negativos (segundo ejemplo). La gran ventaja es que > es muy simple. Si te interesa el tema del procesamiento del lenguaje > natural puedes echarle un vistazo al libro del nltk: > http://www.nltk.org/book > > Para implementar tu algoritmo yo usaría sets. Es facil con ellas ver > si un conjunto de palabras (ubuntu, que, es) está contenido en el > conjunto de palabras del mensaje de IRC. > > Saludos: > > Javi > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > -------------- next part -------------- An HTML attachment was scrubbed... URL: From sergio en wikier.org Fri Jan 28 18:01:04 2011 From: sergio en wikier.org (=?UTF-8?Q?Sergio_Fern=C3=A1ndez?=) Date: Fri, 28 Jan 2011 18:01:04 +0100 Subject: [Python-es] regex In-Reply-To: References: Message-ID: re recomiendo este servicio, es muy cómodo para probar/depurar regex: http://re-try.appspot.com/ 2011/1/27 chakalinux : > Hola, intento buscar palabras en una cadena usando regexp, a ver si me > explico, si tengo por ejemplo esta cadena: > > cad = u"hola como están" > > Quiero que me re me encuentre la cadena cad (puede variar) > independientemente de su posición, (creo que se llama lookahead), o sea: > > "como estan ustedes hola" => true > "hola, ustedes estan bien ? como están" => true > [...] > > Solo he llegado a esto: > > re.match("(?=.*hola)(?=.*como)(?=.*est.n)", cad) > > Esto me funciona pero no me interesa ya que me devuelve siempre true aunque > ponga: "hola como estan" y si quito ".*" no me funciona y > solo me interesa que encuentra las palabras exactas independientemente del > orden que estén. > > ... > > > Un saludo > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- __      ___ _   _ \ \    / (_) |_(_)___ _ _  \ \/\/ /| | / / / -_) '_|  Sergio Fernández   \_/\_/ |_|_\_\_\___|_|    http://www.wikier.org/ From euribates en gmail.com Fri Jan 28 20:40:30 2011 From: euribates en gmail.com (Juan Ignacio) Date: Fri, 28 Jan 2011 19:40:30 +0000 Subject: [Python-es] regex In-Reply-To: References: Message-ID: Y con este que te muestra gráficamente el diagrama de estados de la expresión regular, puedes documentarlo muy bien: http://strfriend.com/ 2011/1/28 Sergio Fernández : > re recomiendo este servicio, es muy cómodo para probar/depurar regex: > http://re-try.appspot.com/ From andsux en gmail.com Fri Jan 28 21:03:29 2011 From: andsux en gmail.com (Andrey Antoukh) Date: Fri, 28 Jan 2011 21:03:29 +0100 Subject: [Python-es] duda con subprocess.Popen In-Reply-To: References: <20110125183309.2e284d9a@gmail.com> <1296033124.2082.9.camel@tny-desktop> <1296124193.2178.29.camel@tny-desktop> <1296207886.2151.15.camel@tny-desktop> Message-ID: No se si me equivoco pero me pregunto si lo que se pretende es analizar la salida de ls -lloquesea mientras lo va listando... pues no seria mejor crear una funcion que use os.walk y retorne un generator... que poco a poco ira devolviendo fichero a fichero, creo que consigues el mismo efecto sin tener que complicarse tanto... Disculpen si me entrometo, y haya dicho algo que no tenga que ver. Un saludo. El día 28 de enero de 2011 14:24, Tony Peña escribió: > ok vale intentare entonces por ahi que es donde mas corto sera el viaje > entonces cualquier cosa les comento > > un abrazo > > El 28 de enero de 2011 05:14, tny escribió: >> >> Además de threads y process también hay programación asíncrona. >> >> Si lo vas a hacer con el comando, yo creo que lo mejor es usar >> io_add_watch como ya te han recomendado: >> www.pygtk.org/pygtk2tutorial/sec-MonitoringIO.html >> De este modo el propio gestor de eventos de pygtk se encarga de llamar a >> tu función cada vez que haya datos que leer en stdout >> >> No necesitas más que definir la función, crear el subproceso, y asignar >> dicha función como callback del stdout del subproceso, y el gtk.main() >> se encarga de todo. >> >> >> Por si no andas fino con el inglés te lo traduzco-resumo >> >> source_id = gobject.io_add_watch(source, condition, callback) >> >> source es el fileno del stdout subprocess >> condition es gobject.IO_IN (porque quieres leer) >> callback es la función que se encargará de leer cuando haya datos que >> leer >> >> la función callback sera del estido de >> def input_callback(source, condition): >> >> donde source es el fileno del stdout del subprocess >> y a condition puedes ignorarle, pues en tu caso siempre sera IO_IN >> OJO debes devolver True para que callback sea llamado la próxima vez que >> lleguen datos a stdout. >> Y no hace falta andar con seeks ni nada, puesto que stdout es un pipe, >> una vez que lees los datos desaparecen. >> >> >> El jue, 27-01-2011 a las 10:13 -0500, Tony Peña escribió: >> > vale, ya andaba por thread a ver si me resultaba pero estube pensando >> > tambien otra opcion que quizas sea otra via es que: >> > >> > podria abrir el fichero antes de ejecutar el proceso y ponerle un >> > seek(0) >> > como posicion inicial, ejecutar con el thread el proceso, y mientras >> > esta >> > escribiendo el seek comience a ir parseando >> > y hacer un recorrido hasta donde se vaya creando mientras se parsea >> > como >> > 2das cosas que debe hacer, y luego seguir recorriendo el fichero >> > con el mismo seek >> > eso podria resolver tambien? >> > >> > vaya es algo tan sencillo como cualquiera que manda a hacer algo en >> > bash y >> > le mande la salida a un log y por otro lado este el tail -f mirando el >> > log >> > que se ve como avanza cuando sucede algo y sino se queda esperando >> > hasta que >> > le pasen el Ctrl C entiendes? >> > >> > bueno eso mismo pero en python >> > >> > saludos >> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- http://twitter.com/andsux http://www.niwi.be **** http://www.freebsd.org/ http://www.postgresql.org/ http://www.python.org/ http://www.djangoproject.com/ "Linux is for people who hate Windows, BSD is for people who love UNIX" "Social Engineer -> Because there is no patch for human stupidity" From emperor.cu en gmail.com Sat Jan 29 01:59:23 2011 From: emperor.cu en gmail.com (=?ISO-8859-1?Q?Tony_Pe=F1a?=) Date: Fri, 28 Jan 2011 19:59:23 -0500 Subject: [Python-es] duda con subprocess.Popen In-Reply-To: References: <20110125183309.2e284d9a@gmail.com> <1296033124.2082.9.camel@tny-desktop> <1296124193.2178.29.camel@tny-desktop> <1296207886.2151.15.camel@tny-desktop> Message-ID: realmente no es un ls para un fichero y otro proceso listando lo del ls es un ejemplo que puse .. yo digo un proceso con cualquier cosa ue lance un proceso super largo y que este tirando una salida para irla analizando.. puede ser ls puede ser una copia puede ser cualquier evento .. El 28 de enero de 2011 15:03, Andrey Antoukh escribió: > No se si me equivoco pero me pregunto si lo que se pretende es > analizar la salida de ls -lloquesea mientras lo va listando... pues no > seria mejor crear una funcion que use os.walk y retorne un > generator... que poco a poco ira devolviendo fichero a fichero, creo > que consigues el mismo efecto sin tener que complicarse tanto... > > Disculpen si me entrometo, y haya dicho algo que no tenga que ver. > > Un saludo. > > El día 28 de enero de 2011 14:24, Tony Peña > escribió: > > ok vale intentare entonces por ahi que es donde mas corto sera el viaje > > entonces cualquier cosa les comento > > > > un abrazo > > > > El 28 de enero de 2011 05:14, tny escribió: > >> > >> Además de threads y process también hay programación asíncrona. > >> > >> Si lo vas a hacer con el comando, yo creo que lo mejor es usar > >> io_add_watch como ya te han recomendado: > >> www.pygtk.org/pygtk2tutorial/sec-MonitoringIO.html > >> De este modo el propio gestor de eventos de pygtk se encarga de llamar a > >> tu función cada vez que haya datos que leer en stdout > >> > >> No necesitas más que definir la función, crear el subproceso, y asignar > >> dicha función como callback del stdout del subproceso, y el gtk.main() > >> se encarga de todo. > >> > >> > >> Por si no andas fino con el inglés te lo traduzco-resumo > >> > >> source_id = gobject.io_add_watch(source, condition, callback) > >> > >> source es el fileno del stdout subprocess > >> condition es gobject.IO_IN (porque quieres leer) > >> callback es la función que se encargará de leer cuando haya datos que > >> leer > >> > >> la función callback sera del estido de > >> def input_callback(source, condition): > >> > >> donde source es el fileno del stdout del subprocess > >> y a condition puedes ignorarle, pues en tu caso siempre sera IO_IN > >> OJO debes devolver True para que callback sea llamado la próxima vez que > >> lleguen datos a stdout. > >> Y no hace falta andar con seeks ni nada, puesto que stdout es un pipe, > >> una vez que lees los datos desaparecen. > >> > >> > >> El jue, 27-01-2011 a las 10:13 -0500, Tony Peña escribió: > >> > vale, ya andaba por thread a ver si me resultaba pero estube pensando > >> > tambien otra opcion que quizas sea otra via es que: > >> > > >> > podria abrir el fichero antes de ejecutar el proceso y ponerle un > >> > seek(0) > >> > como posicion inicial, ejecutar con el thread el proceso, y mientras > >> > esta > >> > escribiendo el seek comience a ir parseando > >> > y hacer un recorrido hasta donde se vaya creando mientras se parsea > >> > como > >> > 2das cosas que debe hacer, y luego seguir recorriendo el fichero > >> > con el mismo seek > >> > eso podria resolver tambien? > >> > > >> > vaya es algo tan sencillo como cualquiera que manda a hacer algo en > >> > bash y > >> > le mande la salida a un log y por otro lado este el tail -f mirando el > >> > log > >> > que se ve como avanza cuando sucede algo y sino se queda esperando > >> > hasta que > >> > le pasen el Ctrl C entiendes? > >> > > >> > bueno eso mismo pero en python > >> > > >> > saludos > >> > >> _______________________________________________ > >> Python-es mailing list > >> Python-es en python.org > >> http://mail.python.org/mailman/listinfo/python-es > >> FAQ: http://python-es-faq.wikidot.com/ > > > > > > _______________________________________________ > > Python-es mailing list > > Python-es en python.org > > http://mail.python.org/mailman/listinfo/python-es > > FAQ: http://python-es-faq.wikidot.com/ > > > > > > > > -- > http://twitter.com/andsux > http://www.niwi.be > **** > http://www.freebsd.org/ > http://www.postgresql.org/ > http://www.python.org/ > http://www.djangoproject.com/ > > "Linux is for people who hate Windows, BSD is for people who love UNIX" > "Social Engineer -> Because there is no patch for human stupidity" > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From chakalinux en gmail.com Sat Jan 29 14:48:40 2011 From: chakalinux en gmail.com (chakalinux) Date: Sat, 29 Jan 2011 14:48:40 +0100 Subject: [Python-es] regex In-Reply-To: References: Message-ID: gracias ... El 28 de enero de 2011 17:26, matt ledding escribió: > +1 x nltk.org/book ... > > sino, por un bot mas sencilla, hay AIML (Artificial Intelligence Markup > Language), pero sobre todo reversedAIML (http://charlix.sourceforge.net/)que > tiene otros ideas interesantes. Puedes crear patrones (ie: "eso que > es"="que es" antes de substantivo precedente.) > http://pyaiml.sourceforge.net existe como compilidor de AIML, y > http://howie.sourceforge.net/ es un opensource AIML chatbot en python si > quieres ver ideas de codigo. Todos en inglés, por cierto... > > Matt > > > > 2011/1/27 lasizoillo > > El día 27 de enero de 2011 22:14, chakalinux >> escribió: >> > Tan mal me explico ? a ver. quería buscar una cadena teniendo en cuenta >> unos >> > patrones, los patrones pueden variar su orden (a, b, c OR b, c, a OR c, >> b ,a >> > [...]) peor ya lo he resuelto. >> > >> > Es un programa para el irc que conecta a una base de datos sqlite3 y >> > responde según la pregunta, por ejemplo: >> > >> > pepito: Que es ubuntu? >> > bot: pepito, http://es.wikipedia.org/wiki/Ubuntu >> > >> > La respuesta del bot es automática, en este caso los patrones son: "que >> es >> > ubuntu", si el usuario pepito hubiera preguntado: >> > >> > pepito: ubuntu ... y eso que es ? >> > >> >> linux_boy: creo que ubuntu es la mejor distro para empezar >> bot: linux_boy, http://es.wikipedia.org/wiki/Ubuntu >> >> linux_boy: tiovivo, con ubuntu no pasaría >> tiovivo: eso que es? >> linux_boy: tiovivo, mira en http://es.wikipedia.org/wiki/Ubuntu >> >> El algoritmo que propones va a fallar con falsos positivos (primer >> ejemplo) y falsos negativos (segundo ejemplo). La gran ventaja es que >> es muy simple. Si te interesa el tema del procesamiento del lenguaje >> natural puedes echarle un vistazo al libro del nltk: >> http://www.nltk.org/book >> >> Para implementar tu algoritmo yo usaría sets. Es facil con ellas ver >> si un conjunto de palabras (ubuntu, que, es) está contenido en el >> conjunto de palabras del mensaje de IRC. >> >> Saludos: >> >> Javi >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From minoztro en gmail.com Sun Jan 30 02:18:33 2011 From: minoztro en gmail.com (Milton Galo Patricio Inostroza Aguilera) Date: Sat, 29 Jan 2011 22:18:33 -0300 Subject: [Python-es] =?utf-8?q?obtener_path_completo_de_los_recursos_de_un?= =?utf-8?q?a_p=C3=A1gina_web?= Message-ID: Hola: He estado utilizando urllib2 para obtener el contenido de páginas web. Hasta ahora todo sin problemas :-). Me di cuenta que el src de las imagenes, css y javascript de algunos sitios está con ruta relativa por lo que cuando obtengo la página pierdo todo eso (tengo la página en un solo archivo). He buscado en la librería como poder cambiar los path relativos a absolutos y no he podido encontrar una solución. Utilizando wget todo va de maravillas con este problema. Utilizo la opción --convert-links y convierte los path relativos a absolutos sin problemas :-). Es posible hacer esto con urllib2?...he leído que no es bueno utilizar wget (o cualquier otro programa externo) debido a que congela el interprete hasta que este comando termine....cuales son las desventajas de cambiarme a wget y dejar urllib2?...Sí!...sólo necesito descargar el contenido de la página (get). Saludos, -- Milton From lasizoillo en gmail.com Sun Jan 30 02:42:27 2011 From: lasizoillo en gmail.com (lasizoillo) Date: Sun, 30 Jan 2011 02:42:27 +0100 Subject: [Python-es] =?utf-8?q?obtener_path_completo_de_los_recursos_de_un?= =?utf-8?q?a_p=C3=A1gina_web?= In-Reply-To: References: Message-ID: El día 30 de enero de 2011 02:18, Milton Galo Patricio Inostroza Aguilera escribió: > Hola: > > He estado utilizando urllib2 para obtener el contenido de páginas web. >  Hasta ahora todo sin problemas :-).  Me di cuenta que el src de las > imagenes, css y javascript de algunos sitios está con ruta relativa > por lo que cuando obtengo la página pierdo todo eso (tengo la página > en un solo archivo).  He buscado en la librería como poder cambiar los > path relativos a absolutos y no he podido encontrar una solución. Urllib vale para descargar una url y se ve que lo hace bien. Para convertir una url a absoluta necesitas saber la url base y la url a convertir: http://docs.python.org/library/urlparse.html#urlparse.urljoin La base se extrae del elemento base o de la dirección de la que te descargaste la pagina con los links: http://www.w3schools.com/tags/tag_base.asp El como haces el parsing de las páginas queda como misterio, pero se supone que lo haces de algún modo ;-) Saludos: Javi From minoztro en gmail.com Sun Jan 30 03:03:36 2011 From: minoztro en gmail.com (Milton Galo Patricio Inostroza Aguilera) Date: Sat, 29 Jan 2011 23:03:36 -0300 Subject: [Python-es] =?utf-8?q?obtener_path_completo_de_los_recursos_de_un?= =?utf-8?q?a_p=C3=A1gina_web?= In-Reply-To: References: Message-ID: > > El como haces el parsing de las páginas queda como misterio, pero se > supone que lo haces de algún modo ;-) wget lo hace solito :-)...aparte a veces el html viene ofuscado y no es fácil meter mano y reconstruir o modificar algo. > > Saludos: Saludos, -- Milton From jpadillaa en gmail.com Sun Jan 30 19:22:14 2011 From: jpadillaa en gmail.com (jpadillaa en gmail.com) Date: Sun, 30 Jan 2011 13:22:14 -0500 Subject: [Python-es] Webcam en python Message-ID: cordial saludo, una pregunta alguien conoce alguna libreria para python que me permita usar una o multiples webcams, segundo quizas algun ejemplo para integrarlo con pyqt. Gracias Jesse Padilla Agudelo Celular: 312 8291144 Linux Registered User #417817 Portal: http://www.intercambiolibre.org Mail: jpadillaa en intercambiolibre.org Msn: jpadillaa en intercambiolibre.org Skype: jesse.agudelo ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From lowlifebob en gmail.com Sun Jan 30 19:29:56 2011 From: lowlifebob en gmail.com (lopz) Date: Sun, 30 Jan 2011 14:29:56 -0400 Subject: [Python-es] Webcam en python In-Reply-To: References: Message-ID: Hola Podrías usar gstreamer, que implementa lo de manejar la webcam, si estás en windows lo más fácil que he visto es usar [1] igual podrías usar pygame, en los personal yo tiraría de gstreamer :) [1] videocapture.sourceforge.net El día 30 de enero de 2011 14:22, jpadillaa en gmail.com escribió: > cordial saludo, > una pregunta alguien conoce alguna libreria para python que me permita usar > una o multiples webcams, segundo quizas algun ejemplo para integrarlo con > pyqt. > Gracias > > Jesse Padilla Agudelo > Celular: 312 8291144 > Linux Registered User #417817 > Portal: http://www.intercambiolibre.org > Mail: jpadillaa en intercambiolibre.org > Msn: jpadillaa en intercambiolibre.org > Skype: jesse.agudelo > > > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- lopz es libre, usa --> GNU/linux gentoo +--[RSA 2048]--+ |  ..o.o=+       | |   o =o*.+      | |  . . *oO .      | |     .EBoo      | |      o.S         | +--[lopz.org]--+ From virako.9 en gmail.com Sun Jan 30 22:09:18 2011 From: virako.9 en gmail.com (Victor Ramirez) Date: Sun, 30 Jan 2011 22:09:18 +0100 Subject: [Python-es] Webcam en python In-Reply-To: References: Message-ID: El 30 de enero de 2011 19:29, lopz escribió: > Hola > > Podrías usar gstreamer, que implementa lo de manejar la webcam, si > estás en windows lo más fácil que he visto es usar [1] > igual podrías usar pygame, en los personal yo tiraría de gstreamer :) > > > [1] videocapture.sourceforge.net > > Yo te recomendaria opencv[2], es multiplataforma y bastante potente y puedes abrir todas las cámaras que quieras. Un saludo y suerte !! [2] http://opencv.willowgarage.com/documentation/index.html# -- http://virako.wordpress.com http://pyrubik.wordpress.com ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From lowlifebob en gmail.com Sun Jan 30 23:38:43 2011 From: lowlifebob en gmail.com (lopz) Date: Sun, 30 Jan 2011 18:38:43 -0400 Subject: [Python-es] Webcam en python In-Reply-To: References: Message-ID: Iba a decirte opencv pero es como dicen, matar moscas a cañonazos, yo tiraría de gstreamer y como segunda opción pygame es que.. opencv hace más, mucho más de lo que necesitas que en este caso es solo mostrar la webcam en algún panel Saludos! Algunos links de interés: http://www.jperla.com/blog/post/capturing-frames-from-a-webcam-on-linux http://brunoprog64.wordpress.com/2009/03/08/jugando-con-webcams-en-python/ este te sirve con gstreamer -> http://stackoverflow.com/questions/2398958/python-qt-gstreamer este te sirve con opencv -> http://stackoverflow.com/questions/3001881/display-an-webcam-stream-in-pyqt4-using-opencv-camera-capture http://qt-apps.org/content/show.php/Qt+Opencv+webcam+viewer?content=89995 El día 30 de enero de 2011 17:09, Victor Ramirez escribió: > > > El 30 de enero de 2011 19:29, lopz escribió: >> >> Hola >> >> Podrías usar gstreamer, que implementa lo de manejar la webcam, si >> estás en windows lo más fácil que he visto es usar [1] >> igual podrías usar pygame, en los personal yo tiraría de gstreamer :) >> >> >> [1] videocapture.sourceforge.net >> > > Yo te recomendaria opencv[2], es multiplataforma y bastante potente y puedes > abrir todas las cámaras que quieras. > > Un saludo y suerte !! > > [2] http://opencv.willowgarage.com/documentation/index.html# > > -- > http://virako.wordpress.com > http://pyrubik.wordpress.com > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- lopz es libre, usa --> GNU/linux gentoo +--[RSA 2048]--+ |  ..o.o=+       | |   o =o*.+      | |  . . *oO .      | |     .EBoo      | |      o.S         | +--[lopz.org]--+ From santiagopereyra.14 en gmail.com Mon Jan 31 00:20:44 2011 From: santiagopereyra.14 en gmail.com (santiago) Date: Sun, 30 Jan 2011 20:20:44 -0300 Subject: [Python-es] widget visible por tiempo determinado en PyGtk Message-ID: hola a todos, estuve buscando esto por mucho tiempo en google, pero no pude encontrar resultados (que funcionen bien), espero que Uds. me puedan ayudar. necesito que al hacer click en un botón aparezca una etiqueta o label por un tiempo determinado (3 o 5 segundos), existe alguna forma de hacer eso? (he intentado con time.sleep (que es lo único que me apareció en google), pero lo único que consigo es un programa congelado por el tiempo que ponga) muchas gracias. PD.: tengo que aclarar que soy nuevo en python-es y todavía bastante novato en python. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From dani en danigm.net Mon Jan 31 00:35:12 2011 From: dani en danigm.net (Daniel Garcia) Date: Mon, 31 Jan 2011 00:35:12 +0100 Subject: [Python-es] widget visible por tiempo determinado en PyGtk In-Reply-To: References: Message-ID: <20110130233512.GB30860@Stibbons> On Sun, Jan 30, 2011 at 08:20:44PM -0300, santiago wrote: > hola a todos, estuve buscando esto por mucho tiempo en google, pero no pude > encontrar resultados (que funcionen bien), espero que Uds. me puedan ayudar. > > necesito que al hacer click en un botón aparezca una etiqueta o label por un > tiempo determinado (3 o 5 segundos), existe alguna forma de hacer eso? > (he intentado con time.sleep (que es lo único que me apareció en google), > pero lo único que consigo es un programa congelado por el tiempo que ponga) > > muchas gracias. > > PD.: tengo que aclarar que soy nuevo en python-es y todavía bastante novato > en python. Mírate gobject_timeout_add [1], con eso puedes hacer lo que estás buscando. [1] http://www.pygtk.org/pygtk2reference/gobject-functions.html#function-gobject--timeout-add ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: no disponible Type: application/pgp-signature Size: 198 bytes Desc: no disponible URL: From hidura en gmail.com Mon Jan 31 00:35:42 2011 From: hidura en gmail.com (Hidura) Date: Sun, 30 Jan 2011 19:35:42 -0400 Subject: [Python-es] widget visible por tiempo determinado en PyGtk In-Reply-To: References: Message-ID: Sube el fuente para ayudarte mejor. El 30/01/11, santiago escribió: > hola a todos, estuve buscando esto por mucho tiempo en google, pero no pude > encontrar resultados (que funcionen bien), espero que Uds. me puedan ayudar. > > necesito que al hacer click en un botón aparezca una etiqueta o label por un > tiempo determinado (3 o 5 segundos), existe alguna forma de hacer eso? > (he intentado con time.sleep (que es lo único que me apareció en google), > pero lo único que consigo es un programa congelado por el tiempo que ponga) > > muchas gracias. > > PD.: tengo que aclarar que soy nuevo en python-es y todavía bastante novato > en python. > -- Enviado desde mi dispositivo móvil Diego I. Hidalgo D. From santiagopereyra.14 en gmail.com Mon Jan 31 02:43:21 2011 From: santiagopereyra.14 en gmail.com (santiago) Date: Sun, 30 Jan 2011 22:43:21 -0300 Subject: [Python-es] widget visible por tiempo determinado en PyGtk In-Reply-To: <20110130233512.GB30860@Stibbons> References: <20110130233512.GB30860@Stibbons> Message-ID: muchísimas gracias, después de varios intentos pude lograrlo El 30 de enero de 2011 20:35, Daniel Garcia escribió: > On Sun, Jan 30, 2011 at 08:20:44PM -0300, santiago wrote: > > hola a todos, estuve buscando esto por mucho tiempo en google, pero no > pude > > encontrar resultados (que funcionen bien), espero que Uds. me puedan > ayudar. > > > > necesito que al hacer click en un botón aparezca una etiqueta o label por > un > > tiempo determinado (3 o 5 segundos), existe alguna forma de hacer eso? > > (he intentado con time.sleep (que es lo único que me apareció en google), > > pero lo único que consigo es un programa congelado por el tiempo que > ponga) > > > > muchas gracias. > > > > PD.: tengo que aclarar que soy nuevo en python-es y todavía bastante > novato > > en python. > > Mírate gobject_timeout_add [1], con eso puedes hacer lo que estás > buscando. > > [1] > > http://www.pygtk.org/pygtk2reference/gobject-functions.html#function-gobject--timeout-add > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From maengora en gmail.com Mon Jan 31 13:44:18 2011 From: maengora en gmail.com (=?ISO-8859-1?Q?Manuel_Enrique_Gonz=E1lez_Ram=EDrez?=) Date: Mon, 31 Jan 2011 07:44:18 -0500 Subject: [Python-es] widget visible por tiempo determinado en PyGtk In-Reply-To: References: <20110130233512.GB30860@Stibbons> Message-ID: Y cómo lo conseguiste?? También es bueno que compartas la solución para otros que lleguen buscando lo mismo. El 30 de enero de 2011 20:43, santiago escribió: > muchísimas gracias, después de varios intentos pude lograrlo > > El 30 de enero de 2011 20:35, Daniel Garcia escribió: > >> On Sun, Jan 30, 2011 at 08:20:44PM -0300, santiago wrote: >> > hola a todos, estuve buscando esto por mucho tiempo en google, pero no >> pude >> > encontrar resultados (que funcionen bien), espero que Uds. me puedan >> ayudar. >> > >> > necesito que al hacer click en un botón aparezca una etiqueta o label >> por un >> > tiempo determinado (3 o 5 segundos), existe alguna forma de hacer eso? >> > (he intentado con time.sleep (que es lo único que me apareció en >> google), >> > pero lo único que consigo es un programa congelado por el tiempo que >> ponga) >> > >> > muchas gracias. >> > >> > PD.: tengo que aclarar que soy nuevo en python-es y todavía bastante >> novato >> > en python. >> >> Mírate gobject_timeout_add [1], con eso puedes hacer lo que estás >> buscando. >> >> [1] >> >> http://www.pygtk.org/pygtk2reference/gobject-functions.html#function-gobject--timeout-add >> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- Manuel Enrique González Ramírez http://maengora.blogspot.com ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From santiagopereyra.14 en gmail.com Mon Jan 31 16:50:15 2011 From: santiagopereyra.14 en gmail.com (santiago) Date: Mon, 31 Jan 2011 12:50:15 -0300 Subject: [Python-es] widget visible por tiempo determinado en PyGtk In-Reply-To: References: <20110130233512.GB30860@Stibbons> Message-ID: este es un ejemplo que hice para probarlo. #! /usr/bin/env python import sys, os, gtk, gobject class test: def __init__(self): self.win = gtk.Window() self.butt = gtk.Button('click me') self.lab = gtk.Label('test') self.hb = gtk.HBox() self.win.connect('destroy', gtk.main_quit) self.butt.connect('clicked', self.buttclick) self.win.set_title('test timeout') self.win.add(self.hb) self.hb.pack_start(self.butt) self.hb.pack_start(self.lab) self.win.show_all() self.lab.set_visible(False) def buttclick(self, widget): self.lab.set_visible(True) gobject.timeout_add(1000, self.buttclick2) # si pongo 'self.lab.set_visible(False)' directamente manda un error (second argument not callable) def buttclick2(self): self.lab.set_visible(False) test() gtk.main() El 31 de enero de 2011 09:44, Manuel Enrique González Ramírez < maengora en gmail.com> escribió: > Y cómo lo conseguiste?? > > También es bueno que compartas la solución para otros que lleguen buscando > lo mismo. > > El 30 de enero de 2011 20:43, santiago escribió: > > muchísimas gracias, después de varios intentos pude lograrlo >> >> El 30 de enero de 2011 20:35, Daniel Garcia escribió: >> >>> On Sun, Jan 30, 2011 at 08:20:44PM -0300, santiago wrote: >>> > hola a todos, estuve buscando esto por mucho tiempo en google, pero no >>> pude >>> > encontrar resultados (que funcionen bien), espero que Uds. me puedan >>> ayudar. >>> > >>> > necesito que al hacer click en un botón aparezca una etiqueta o label >>> por un >>> > tiempo determinado (3 o 5 segundos), existe alguna forma de hacer eso? >>> > (he intentado con time.sleep (que es lo único que me apareció en >>> google), >>> > pero lo único que consigo es un programa congelado por el tiempo que >>> ponga) >>> > >>> > muchas gracias. >>> > >>> > PD.: tengo que aclarar que soy nuevo en python-es y todavía bastante >>> novato >>> > en python. >>> >>> Mírate gobject_timeout_add [1], con eso puedes hacer lo que estás >>> buscando. >>> >>> [1] >>> >>> http://www.pygtk.org/pygtk2reference/gobject-functions.html#function-gobject--timeout-add >>> >>> _______________________________________________ >>> Python-es mailing list >>> Python-es en python.org >>> http://mail.python.org/mailman/listinfo/python-es >>> FAQ: http://python-es-faq.wikidot.com/ >>> >>> >> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> > > > -- > Manuel Enrique González Ramírez > http://maengora.blogspot.com > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From jcaballero.hep en gmail.com Mon Jan 31 22:25:51 2011 From: jcaballero.hep en gmail.com (Jose Caballero) Date: Mon, 31 Jan 2011 16:25:51 -0500 Subject: [Python-es] =?iso-8859-1?q?=BF_=5F=5Fsetattr=5F=5F=28=29_no_se_in?= =?iso-8859-1?q?voca_para_reescribir_un_par_=28key=2Cvalue=29_en_un?= =?iso-8859-1?q?_diccionario_dentro_de_una_clase=3F?= Message-ID: Hola, perdón por el subject, es un poco críptico. Intento explicarlo... Sea una clase C como la siguiente ---------------------------------------------------------------------- class C: def __init__(self): self.x = 0 self.d = {'a':'A','b':'B'} def __setattr__(self, var, value): print 'invoking __setattr__ ', var, value self.__dict__[var] = value ---------------------------------------------------------------------- Si ahora escribimos un código como obj = C() Se genera el siguiente output invoking __setattr__ x 0 invoking __setattr__ d {'a': 'A', 'b': 'B'} Que corresponde a las dos asignaciones que aparecen en el __init__() Perfecto. ---------------------------------------------------------------------- Si además hacemos algo como obj.x = 1 obtenemos una nueva línea en el output invoking __setattr__ x 1 ---------------------------------------------------------------------- Sin embargo no veo una línea similar si ahora escribo obj.d['a']='AA' ¿Por qué? ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From dani en danigm.net Mon Jan 31 22:45:04 2011 From: dani en danigm.net (Daniel Garcia) Date: Mon, 31 Jan 2011 22:45:04 +0100 Subject: [Python-es] =?utf-8?b?wr8gX19zZXRhdHRyX18oKSBubyBzZSBpbnZvY2Eg?= =?utf-8?q?para_reescribir_un_par_=28key=2Cvalue=29_en_un_diccionario_dent?= =?utf-8?q?ro_de_una_clase=3F?= In-Reply-To: References: Message-ID: <20110131214504.GA3618@Stibbons> On Mon, Jan 31, 2011 at 04:25:51PM -0500, Jose Caballero wrote: > Hola, > > perdón por el subject, es un poco críptico. Intento explicarlo... > > Sea una clase C como la siguiente > > ---------------------------------------------------------------------- > class C: > def __init__(self): > self.x = 0 > self.d = {'a':'A','b':'B'} > def __setattr__(self, var, value): > print 'invoking __setattr__ ', var, value > self.__dict__[var] = value > ---------------------------------------------------------------------- > > Si ahora escribimos un código como > > obj = C() > > Se genera el siguiente output > > invoking __setattr__ x 0 > invoking __setattr__ d {'a': 'A', 'b': 'B'} > > Que corresponde a las dos asignaciones que aparecen en el __init__() > Perfecto. > > ---------------------------------------------------------------------- > > Si además hacemos algo como > > obj.x = 1 > > obtenemos una nueva línea en el output > > invoking __setattr__ x 1 > > ---------------------------------------------------------------------- > > Sin embargo no veo una línea similar si ahora escribo > > obj.d['a']='AA' > > ¿Por qué? Al hacer obj.d['a'] = 'AA' no se está llamando al setattr porque no estás añadiendo un atributo al objeto, sino un elemento al diccionario d. ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: no disponible Type: application/pgp-signature Size: 198 bytes Desc: no disponible URL: From pau.cervera en gmail.com Mon Jan 31 22:45:09 2011 From: pau.cervera en gmail.com (Pau Cervera) Date: Mon, 31 Jan 2011 22:45:09 +0100 Subject: [Python-es] =?utf-8?b?wr8gX19zZXRhdHRyX18oKSBubyBzZSBpbnZvY2Eg?= =?utf-8?q?para_reescribir_un_par_=28key=2Cvalue=29_en_un_diccionar?= =?utf-8?q?io_dentro_de_una_clase=3F?= In-Reply-To: References: Message-ID: Yo diría que es porqué estás haciendo un get de d, y ya cuando lo tienes haces una asignación al índice 'a' de ese objeto. ----- Pau Python..., what else? 2011/1/31 Jose Caballero > Hola, > > perdón por el subject, es un poco críptico. Intento explicarlo... > > Sea una clase C como la siguiente > > ---------------------------------------------------------------------- > class C: > def __init__(self): > self.x = 0 > self.d = {'a':'A','b':'B'} > def __setattr__(self, var, value): > print 'invoking __setattr__ ', var, value > self.__dict__[var] = value > ---------------------------------------------------------------------- > > Si ahora escribimos un código como > > obj = C() > > Se genera el siguiente output > > invoking __setattr__ x 0 > invoking __setattr__ d {'a': 'A', 'b': 'B'} > > Que corresponde a las dos asignaciones que aparecen en el __init__() > Perfecto. > > ---------------------------------------------------------------------- > > Si además hacemos algo como > > obj.x = 1 > > obtenemos una nueva línea en el output > > invoking __setattr__ x 1 > > ---------------------------------------------------------------------- > > Sin embargo no veo una línea similar si ahora escribo > > obj.d['a']='AA' > > ¿Por qué? > > > > > > > > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From pau.cervera en gmail.com Mon Jan 31 23:03:10 2011 From: pau.cervera en gmail.com (Pau Cervera) Date: Mon, 31 Jan 2011 23:03:10 +0100 Subject: [Python-es] =?utf-8?b?wr8gX19zZXRhdHRyX18oKSBubyBzZSBpbnZvY2Eg?= =?utf-8?q?para_reescribir_un_par_=28key=2Cvalue=29_en_un_diccionar?= =?utf-8?q?io_dentro_de_una_clase=3F?= In-Reply-To: <20110131214504.GA3618@Stibbons> References: <20110131214504.GA3618@Stibbons> Message-ID: Eso mismo quería decir yo. Si en lugar de eso haces un set, obj.d = "hola", volverá a pasar por el setter. Quizá esto te resulte interesante. También recuerdo que había una presentación de alguien, en texto plano, sobre metaclasses y descriptores, pero no lo encuentro. ----- Pau Python..., what else? 2011/1/31 Daniel Garcia > On Mon, Jan 31, 2011 at 04:25:51PM -0500, Jose Caballero wrote: > > Hola, > > > > perdón por el subject, es un poco críptico. Intento explicarlo... > > > > Sea una clase C como la siguiente > > > > ---------------------------------------------------------------------- > > class C: > > def __init__(self): > > self.x = 0 > > self.d = {'a':'A','b':'B'} > > def __setattr__(self, var, value): > > print 'invoking __setattr__ ', var, value > > self.__dict__[var] = value > > ---------------------------------------------------------------------- > > > > Si ahora escribimos un código como > > > > obj = C() > > > > Se genera el siguiente output > > > > invoking __setattr__ x 0 > > invoking __setattr__ d {'a': 'A', 'b': 'B'} > > > > Que corresponde a las dos asignaciones que aparecen en el __init__() > > Perfecto. > > > > ---------------------------------------------------------------------- > > > > Si además hacemos algo como > > > > obj.x = 1 > > > > obtenemos una nueva línea en el output > > > > invoking __setattr__ x 1 > > > > ---------------------------------------------------------------------- > > > > Sin embargo no veo una línea similar si ahora escribo > > > > obj.d['a']='AA' > > > > ¿Por qué? > > Al hacer obj.d['a'] = 'AA' no se está llamando al setattr porque no > estás añadiendo un atributo al objeto, sino un elemento al > diccionario d. > > _______________________________________________ > Python-es mailing list > Python-es en python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: