From markuz en islascruz.org Thu Nov 1 01:01:13 2007 From: markuz en islascruz.org (Marco Antonio Islas Cruz) Date: Thu Nov 1 01:01:28 2007 Subject: [Python-es] ejecutar en red In-Reply-To: References: Message-ID: <1193875273.7181.2.camel@cucusa.islascruz.org> Si no te intereza que medio mundo pueda conectarse a la base de datos comparte tu cliente, de otra forma, crea un servidor y un cliente, de esta forma restringes tus consultas y no expones tu manejador de base de datos. On Wed, 2007-10-31 at 17:38 -0500, Manuel Enrique González Ramírez wrote: > Cordial saludo. > > Tengo un sencillo programa que almacena, muestra, elimina y busca > informacion en una base de datos MySQL. > > Mi pregunta es la siguiente: > ¿Si quisiera compartir mi programa en la intranet de la oficina debo cambiar > totalmente mi programa y crear un programa servidor y otro cliente o > simplemente la copia en los equipos de la red local cambio la forma en que > se conectan a MySQL?? > > Algun ejemplo disponible?? > > Gracias > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes -- <--Linux... Because I'm Free--> Marco Antonio Islas Cruz "Markuz" Linux User #280229 markuz@islascruz.org markuz@unixmexico.org markuz@linuxpozarica.com marco.islas@gmail.com islacruz@yahoo.com http://www.islascruz.org http://sourceforge.net/projects/gpkg/ http://www.linuxpozarica.com ------------ próxima parte ------------ Se ha borrado un mensaje que no está en formato texto plano... Nombre : no disponible Tipo : application/pgp-signature Tamaño : 189 bytes Descripción: This is a digitally signed message part Url : /archivos/python-es/attachments/20071031/32b4b84b/attachment-0001.pgp From ftoledo en docksud.com.ar Thu Nov 1 02:07:06 2007 From: ftoledo en docksud.com.ar (Fernando Toledo) Date: Thu Nov 1 02:37:45 2007 Subject: [Python-es] Glade: Tablas vs =?iso-8859-1?q?Est=E1ticas?= In-Reply-To: <1193854455.6764.14.camel@cucusa.islascruz.org> References: <1193831066.5078.4.camel@pcdaniel.cdi> <172699c50710310912m16c4db49g90611fc2b0fa826d@mail.gmail.com> <1193854455.6764.14.camel@cucusa.islascruz.org> Message-ID: <200710312207.08372.ftoledo@docksud.com.ar> El Mié 31 Oct 2007, Marco Antonio Islas Cruz escribió: > Yo no recomendaria usar tepache para generar codigo en python, seria mas > o menos lo mismo que harias en Glade-2 al enviar tu archivito .glade a > C, C++ o Ada. hola en esto estoy de acuerdo > > Mejor deja tu interfaz donde esta, cargala con libglade y conecta tus > seniales. Incluso, en lugar de conectar tus seniales con autoconnect, te > recomendaria que obtuvieras una > instancia del widget y conectaras a patita. > en esto, me gustaría saber porque no recomendas usar el autoconnect? un abrazo! > On Wed, 2007-10-31 at 13:12 -0300, Milton Galo Patricio Inostroza > -- Dock Sud BBS http://www.docksud.com.ar telnet://bbs.docksud.com.ar ------------ próxima parte ------------ Se ha borrado un mensaje que no está en formato texto plano... Nombre : no disponible Tipo : application/pgp-signature Tamaño : 189 bytes Descripción: This is a digitally signed message part. Url : /archivos/python-es/attachments/20071031/7f83c428/attachment.pgp From acido69 en gmail.com Thu Nov 1 11:55:05 2007 From: acido69 en gmail.com (acido || cuatroxl.org) Date: Thu Nov 1 11:55:14 2007 Subject: [Python-es] hola, tengo un problema con pyDev Message-ID: Hola a todos, antes de nada decir que soy nuevo en la lista. Estoy empezando con python y me instalé Pydev en eclipse, Python(msi instaler, desde la página) y Jython Asta aquí todo bien, me compila y tal. pero mi problema empieza cuando intento incluir la librería "re" (import re) me dice que no esta, yo lo he mirado en el programa(c:/jyton/lib/..) y si que está. Alguno sabe porque pasa esto? o porque tengo este problema?? muchas gracias -------------------------- gracias de antemano a todos. From markuz en islascruz.org Thu Nov 1 19:25:36 2007 From: markuz en islascruz.org (Marco Antonio Islas Cruz) Date: Fri Nov 2 00:14:37 2007 Subject: [Python-es] hola, tengo un problema con pyDev In-Reply-To: References: Message-ID: <1193941536.6743.21.camel@cucusa.islascruz.org> sera que dentro de tu proyecto tengas una carpeta llamada "lib" ??, mejor dicho, un paquete llamado "lib". Recuerda que Python inserta en sys.path y en el indice cero la path sobre la que te encuentras al ejecutar tu aplicacion. Otra cosa, recuerda en la configuracion de pydev las paths donde Python pueda encontrar los modulos. On Thu, 2007-11-01 at 11:55 +0100, acido || cuatroxl.org wrote: > Hola a todos, antes de nada decir que soy nuevo en la lista. > Estoy empezando con python y me instalé Pydev en eclipse, Python(msi > instaler, desde la página) y Jython > Asta aquí todo bien, me compila y tal. > pero mi problema empieza cuando intento incluir la librería "re" (import re) > me dice que no esta, yo lo he mirado en el programa(c:/jyton/lib/..) y si > que está. > > Alguno sabe porque pasa esto? o porque tengo este problema?? muchas gracias > -------------------------- > gracias de antemano a todos. > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes -- <--Linux... Because I'm Free--> Marco Antonio Islas Cruz "Markuz" Linux User #280229 markuz@islascruz.org markuz@unixmexico.org markuz@linuxpozarica.com marco.islas@gmail.com islacruz@yahoo.com http://www.islascruz.org http://sourceforge.net/projects/gpkg/ http://www.linuxpozarica.com ------------ próxima parte ------------ Se ha borrado un mensaje que no está en formato texto plano... Nombre : no disponible Tipo : application/pgp-signature Tamaño : 189 bytes Descripción: This is a digitally signed message part Url : /archivos/python-es/attachments/20071101/58ec7857/attachment.pgp From markuz en islascruz.org Thu Nov 1 19:20:27 2007 From: markuz en islascruz.org (Marco Antonio Islas Cruz) Date: Fri Nov 2 01:03:27 2007 Subject: [Python-es] Glade: Tablas vs =?ISO-8859-1?Q?Est=E1ticas?= In-Reply-To: <200710312207.08372.ftoledo@docksud.com.ar> References: <1193831066.5078.4.camel@pcdaniel.cdi> <172699c50710310912m16c4db49g90611fc2b0fa826d@mail.gmail.com> <1193854455.6764.14.camel@cucusa.islascruz.org> <200710312207.08372.ftoledo@docksud.com.ar> Message-ID: <1193941227.6743.17.camel@cucusa.islascruz.org> En glade-2 y en Glade-3 tienes el problema de que cuando copias o cortas y pegas algun widget, este widget y sus widgets hijos cambian su nombre, y tambien, pierden las conexiones de senial con sus callbacks. Prefiero nada mas volver a poner el nombre del widget que por lo general es quitar un "1" que se le agrega, a tener que ir widget por widget y reconectar la senial. Para obtener la referencia de los widgets puedes usar un simple ciclo; __widgets = {} for i in ('widget1','widget2','widget3'): __widgets[i] = instancia_glade.get_widget(i) Ustedes opinen :-) On Wed, 2007-10-31 at 22:07 -0300, Fernando Toledo wrote: > El Mié 31 Oct 2007, Marco Antonio Islas Cruz escribió: > > Yo no recomendaria usar tepache para generar codigo en python, seria mas > > o menos lo mismo que harias en Glade-2 al enviar tu archivito .glade a > > C, C++ o Ada. > hola en esto estoy de acuerdo > > > > Mejor deja tu interfaz donde esta, cargala con libglade y conecta tus > > seniales. Incluso, en lugar de conectar tus seniales con autoconnect, te > > recomendaria que obtuvieras una > > instancia del widget y conectaras a patita. > > > en esto, me gustaría saber porque no recomendas usar el autoconnect? > un abrazo! > > > On Wed, 2007-10-31 at 13:12 -0300, Milton Galo Patricio Inostroza > > > > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes -- <--Linux... Because I'm Free--> Marco Antonio Islas Cruz "Markuz" Linux User #280229 markuz@islascruz.org markuz@unixmexico.org markuz@linuxpozarica.com marco.islas@gmail.com islacruz@yahoo.com http://www.islascruz.org http://sourceforge.net/projects/gpkg/ http://www.linuxpozarica.com ------------ próxima parte ------------ Se ha borrado un mensaje que no está en formato texto plano... Nombre : no disponible Tipo : application/pgp-signature Tamaño : 189 bytes Descripción: This is a digitally signed message part Url : /archivos/python-es/attachments/20071101/806479a5/attachment.pgp From arnau en ehas.org Fri Nov 2 02:19:05 2007 From: arnau en ehas.org (Arnau Sanchez) Date: Fri Nov 2 02:29:16 2007 Subject: [Python-es] Glade: Tablas vs =?UTF-8?B?RXN0w6F0aWNhcw==?= In-Reply-To: <1193941227.6743.17.camel@cucusa.islascruz.org> References: <1193831066.5078.4.camel@pcdaniel.cdi> <172699c50710310912m16c4db49g90611fc2b0fa826d@mail.gmail.com> <1193854455.6764.14.camel@cucusa.islascruz.org> <200710312207.08372.ftoledo@docksud.com.ar> <1193941227.6743.17.camel@cucusa.islascruz.org> Message-ID: <472A7B09.4030206@ehas.org> Marco Antonio Islas Cruz escribió: > Para obtener la referencia de los widgets puedes usar un simple ciclo; > > __widgets = {} > for i in ('widget1','widget2','widget3'): > __widgets[i] = instancia_glade.get_widget(i) Yo también suelo hacerlo de esta forma, ya que no acabo de ver qué se gana con poner referencias a retrollamadas en el diseño. > __widgets = {} Ya que estamos en plan "¿cómo hacen los demás las cosas?": usando una clase Struct simple como la que aparece en el FAQ (http://pythonesfaq.k-rolus.net/#index33h3) puede quedar así: widget_names = ["widget1", "widget2", "widget3"] w = ((name, instancia_glade.get_widget(name)) for name in widget_names) widgets = Struct(**dict(w)) widgets.widget1.show() (más bonito que widgets["widget1"].show(), ¿no?) From pych3m4 en gmail.com Fri Nov 2 04:25:58 2007 From: pych3m4 en gmail.com (Chema Cortes) Date: Fri Nov 2 04:26:06 2007 Subject: Sobre Open Komodo Era: OT: Re: [Python-es] sobre BOA Constructor In-Reply-To: <771741b20710301129l41e8f78fya3873bd60d340bc8@mail.gmail.com> References: <771741b20710301129l41e8f78fya3873bd60d340bc8@mail.gmail.com> Message-ID: <2c9fb0dd0711012025g4490c928n28160b3ccb313ed7@mail.gmail.com> El 30/10/07, Mario Lacunza escribió: > > El 30/10/07, Chema Cortes escribió: > > > Por cierto, ya que vuelve a salir el tema: no se ha dicho que > > > openkomodo no incluye ni depurador ni control de versiones, con lo > > > que, en mi opinión, Eclipse siendo la herramienta "definitiva". > > En mi opinion para q sea "definitiva" deberia contar con un diseñador visual > de GUI.... lo cual solo tienen wxGlade y el Boa... o me equivoco? Mmm! Si nos centramos en wx, también estarían pythoncard (que vale la pena probar) y wxdesigner. En cuanto a eclipse, tiene un meta-diseñador de interfaces llamado Visual Editor con el que se puede crear cualquier diseñador de interfaces. Como ejemplos sólo se incluyen dos diseñadores, para swt, librería nativa con la que se ha hecho el eclipse, y swing, popular GUI para java/jython. No se incluyen más interfaces (de momento), pero sería posible añadirle uno para wx, si álguien se animara a hacerlo. Aparte del visual editor, hay cosas más específicas como el plugin de qtjambi que integra qtdesigner en eclipse: http://doc.trolltech.com/qtjambi-4.3.2_01/com/trolltech/qt/qtjambi-eclipse.html From pych3m4 en gmail.com Fri Nov 2 04:38:37 2007 From: pych3m4 en gmail.com (Chema Cortes) Date: Fri Nov 2 04:38:55 2007 Subject: [Python-es] hola, tengo un problema con pyDev In-Reply-To: References: Message-ID: <2c9fb0dd0711012038l50de186fhdb166f17377ea2a7@mail.gmail.com> El 1/11/07, acido || cuatroxl.org escribió: > Hola a todos, antes de nada decir que soy nuevo en la lista. > Estoy empezando con python y me instalé Pydev en eclipse, Python(msi > instaler, desde la página) y Jython > Asta aquí todo bien, me compila y tal. > pero mi problema empieza cuando intento incluir la librería "re" (import re) > me dice que no esta, yo lo he mirado en el programa(c:/jyton/lib/..) y si > que está. > > Alguno sabe porque pasa esto? o porque tengo este problema?? muchas gracias Por ir descartando problemas, ejecuta jython desde una cónsola y prueba ahí a importar el módulo re. Si no falla desde cónsola, es entonces problema de configuración. Haz que el programa, antes de importar el re, imprima lo siguiente y nos lo pones en un mensaje: import sys print sys.path print sys.version print sys.platform print sys.JYTHON_JAR From listas en soft-com.es Fri Nov 2 14:37:31 2007 From: listas en soft-com.es (=?ISO-8859-1?Q?Oswaldo_Hern=E1ndez?=) Date: Fri Nov 2 14:37:56 2007 Subject: [Python-es] subprocess.popen, capturar stdout :) In-Reply-To: <4728A632.4090906@ehas.org> References: <472744E8.7050304@soft-com.es> <47275406.9090702@ehas.org> <472765BA.80803@soft-com.es> <47276C8E.3010609@soft-com.es> <47277E37.1020409@ehas.org> <472789B0.7020006@rvburke.com> <472795B0.60702@ehas.org> <47288819.4010009@soft-com.es> <4728A632.4090906@ehas.org> Message-ID: <472B281B.8080501@soft-com.es> Arnau Sanchez escribió: > Oswaldo Hernández escribió: > > > Siempre puedes usar expect (el de verdad, no el módulo), y lo llamas > desde tu programa python aprovechando lo que ya tenemos hecho: Bueno, parece que ya lo le solucionado, os cuento: Sobre el except vi que viene como parte de tcl, y no me hacia mucha gracia tener que instalarlo todo con la aplicación. Ademas, hay otro problema añadido, tengo que capturar stdout y stderr simultáneamente, los mensajes pueden venir en cualquier momento por cualquiera de los dos canales. Como readline() es bloqueante, si espero por stdin, no capturo los mensajes de stderr y a la inversa. Probe utilizando read y os.read pero no me funcionaban bien (o no supe hacerlos funcionar). Tomando la idea de utilizar un programa auxiliar he creado un programita en C para hacer esta funcion. En este programa ejecuta la aplicacion y crea dos pipes para capturar el stdout y el stderr de esta. Realizando lecturas no bloqueantes captura las salidas de ambos canales, a continuación las envia todas por stdout forzando un flush() y adiendoles un prefijo que indica si es una salida std o err. A partir de esto ya no hay problema de hacer la captura desde python utilizando el generador de realines() tal como indicabas. Si a alguien le interesa esta utilidad, no hay problema en compartirla. Saludos, -- ***************************************** Oswaldo Hernández oswaldo (@) soft-com (.) es ***************************************** From pachi en rvburke.com Fri Nov 2 14:42:03 2007 From: pachi en rvburke.com (Rafael Villar Burke) Date: Fri Nov 2 14:42:19 2007 Subject: [Python-es] subprocess.popen, capturar stdout :) In-Reply-To: <472B281B.8080501@soft-com.es> References: <472744E8.7050304@soft-com.es> <47275406.9090702@ehas.org> <472765BA.80803@soft-com.es> <47276C8E.3010609@soft-com.es> <47277E37.1020409@ehas.org> <472789B0.7020006@rvburke.com> <472795B0.60702@ehas.org> <47288819.4010009@soft-com.es> <4728A632.4090906@ehas.org> <472B281B.8080501@soft-com.es> Message-ID: <472B292B.8050501@rvburke.com> Oswaldo Hernández wrote: > Tomando la idea de utilizar un programa auxiliar he creado un > programita en C para hacer esta funcion. En este programa ejecuta la > aplicacion y crea dos pipes para capturar el stdout y el stderr de > esta. Realizando lecturas no bloqueantes captura las salidas de ambos > canales, a continuación las envia todas por stdout forzando un flush() > y adiendoles un prefijo que indica si es una salida std o err. A > partir de esto ya no hay problema de hacer la captura desde python > utilizando el generador de realines() tal como indicabas. > > Si a alguien le interesa esta utilidad, no hay problema en compartirla. Si no es muy extensa (me imagino que no), incluso podría ir como adjunto a la lista, para que quede en los archivos. Seguro que a mucha gente le interesa. Saludos, Rafael Villar Burke From arnau en ehas.org Fri Nov 2 14:48:17 2007 From: arnau en ehas.org (Arnau Sanchez) Date: Fri Nov 2 14:48:38 2007 Subject: [Python-es] subprocess.popen, capturar stdout :) In-Reply-To: <472B281B.8080501@soft-com.es> References: <472744E8.7050304@soft-com.es> <47275406.9090702@ehas.org> <472765BA.80803@soft-com.es> <47276C8E.3010609@soft-com.es> <47277E37.1020409@ehas.org> <472789B0.7020006@rvburke.com> <472795B0.60702@ehas.org> <47288819.4010009@soft-com.es> <4728A632.4090906@ehas.org> <472B281B.8080501@soft-com.es> Message-ID: <472B2AA1.9080203@ehas.org> Oswaldo Hernández escribió: > Ademas, hay otro problema añadido, tengo que capturar stdout y stderr > simultáneamente, los mensajes pueden venir en cualquier momento por > cualquiera de los dos canales. Como readline() es bloqueante, si espero > por stdin, no capturo los mensajes de stderr y a la inversa. Probe > utilizando read y os.read pero no me funcionaban bien (o no supe > hacerlos funcionar). Por si acaso te sirve: subprocess.Popen(..., stderr=subprocess.STDOUT, ...) > Tomando la idea de utilizar un programa auxiliar he creado un programita > en C para hacer esta funcion. ¡Pero eso mismo que has hecho en C se debería poder hacer en Python! Si dices que pipes no se bloquea el programa, ya tienes la solución, impleméntalo con pipes también en Python (os.pipe). From markuz en islascruz.org Fri Nov 2 14:44:13 2007 From: markuz en islascruz.org (Marco Antonio Islas Cruz) Date: Fri Nov 2 15:04:07 2007 Subject: [Python-es] Glade: Tablas vs =?ISO-8859-1?Q?Est=E1ticas?= In-Reply-To: <472A7B09.4030206@ehas.org> References: <1193831066.5078.4.camel@pcdaniel.cdi> <172699c50710310912m16c4db49g90611fc2b0fa826d@mail.gmail.com> <1193854455.6764.14.camel@cucusa.islascruz.org> <200710312207.08372.ftoledo@docksud.com.ar> <1193941227.6743.17.camel@cucusa.islascruz.org> <472A7B09.4030206@ehas.org> Message-ID: <1194011053.6376.12.camel@cucusa.islascruz.org> On Fri, 2007-11-02 at 02:19 +0100, Arnau Sanchez wrote: > Ya que estamos en plan "¿cómo hacen los demás las cosas?": usando una > clase Struct simple como la que aparece en el FAQ > (http://pythonesfaq.k-rolus.net/#index33h3) puede quedar así: > > widget_names = ["widget1", "widget2", "widget3"] > w = ((name, instancia_glade.get_widget(name)) for name in widget_names) > widgets = Struct(**dict(w)) > > widgets.widget1.show() > > (más bonito que widgets["widget1"].show(), ¿no?) Me parece muy buena forma, -- <--Linux... Because I'm Free--> Marco Antonio Islas Cruz "Markuz" Linux User #280229 markuz@islascruz.org markuz@unixmexico.org markuz@linuxpozarica.com marco.islas@gmail.com islacruz@yahoo.com http://www.islascruz.org http://sourceforge.net/projects/gpkg/ http://www.linuxpozarica.com ------------ próxima parte ------------ Se ha borrado un mensaje que no está en formato texto plano... Nombre : no disponible Tipo : application/pgp-signature Tamaño : 189 bytes Descripción: This is a digitally signed message part Url : /archivos/python-es/attachments/20071102/8acb4120/attachment.pgp From listas en soft-com.es Fri Nov 2 15:11:16 2007 From: listas en soft-com.es (=?ISO-8859-1?Q?Oswaldo_Hern=E1ndez?=) Date: Fri Nov 2 15:11:36 2007 Subject: [Python-es] subprocess.popen, capturar stdout :) In-Reply-To: <472B2AA1.9080203@ehas.org> References: <472744E8.7050304@soft-com.es> <47275406.9090702@ehas.org> <472765BA.80803@soft-com.es> <47276C8E.3010609@soft-com.es> <47277E37.1020409@ehas.org> <472789B0.7020006@rvburke.com> <472795B0.60702@ehas.org> <47288819.4010009@soft-com.es> <4728A632.4090906@ehas.org> <472B281B.8080501@soft-com.es> <472B2AA1.9080203@ehas.org> Message-ID: <472B3004.4010107@soft-com.es> Arnau Sanchez escribió: > Oswaldo Hernández escribió: > >> Ademas, hay otro problema añadido, tengo que capturar stdout y stderr >> simultáneamente, los mensajes pueden venir en cualquier momento por >> cualquiera de los dos canales. Como readline() es bloqueante, si >> espero por stdin, no capturo los mensajes de stderr y a la inversa. >> Probe utilizando read y os.read pero no me funcionaban bien (o no supe >> hacerlos funcionar). > > Por si acaso te sirve: > > subprocess.Popen(..., stderr=subprocess.STDOUT, ...) > >> Tomando la idea de utilizar un programa auxiliar he creado un >> programita en C para hacer esta funcion. > > ¡Pero eso mismo que has hecho en C se debería poder hacer en Python! > Si dices que pipes no se bloquea el programa, ya tienes la solución, > impleméntalo con pipes también en Python (os.pipe). Creeme que lo he intentado, el problema que he tenido ha sido con readline(), line = stdin.readline() queda esperando indefinidamente hasta que entre una linea por stdin, mientras tando pueden estar llegando mensajes por stderr que no son capturados. He intentado utilizad read, pero no lo he conseguido. -- ***************************************** Oswaldo Hernández oswaldo (@) soft-com (.) es ***************************************** From listas en soft-com.es Fri Nov 2 15:13:37 2007 From: listas en soft-com.es (=?ISO-8859-1?Q?Oswaldo_Hern=E1ndez?=) Date: Fri Nov 2 15:15:08 2007 Subject: [Python-es] subprocess.popen, capturar stdout :) In-Reply-To: <472B292B.8050501@rvburke.com> References: <472744E8.7050304@soft-com.es> <47275406.9090702@ehas.org> <472765BA.80803@soft-com.es> <47276C8E.3010609@soft-com.es> <47277E37.1020409@ehas.org> <472789B0.7020006@rvburke.com> <472795B0.60702@ehas.org> <47288819.4010009@soft-com.es> <4728A632.4090906@ehas.org> <472B281B.8080501@soft-com.es> <472B292B.8050501@rvburke.com> Message-ID: <472B3091.2060805@soft-com.es> Rafael Villar Burke escribió: > Si no es muy extensa (me imagino que no), incluso podría ir como adjunto > a la lista, para que quede en los archivos. > Seguro que a mucha gente le interesa. > No se si la lista permite archivos adjuntos, si no llega envio otro mensaje con codigo en el cuerpo del mensaje. -- ***************************************** Oswaldo Hernández oswaldo (@) soft-com (.) es ***************************************** From listas en soft-com.es Fri Nov 2 15:29:54 2007 From: listas en soft-com.es (=?ISO-8859-1?Q?Oswaldo_Hern=E1ndez?=) Date: Fri Nov 2 15:30:10 2007 Subject: [Python-es] subprocess.popen, capturar stdout :) In-Reply-To: <472B3091.2060805@soft-com.es> References: <472744E8.7050304@soft-com.es> <47275406.9090702@ehas.org> <472765BA.80803@soft-com.es> <47276C8E.3010609@soft-com.es> <47277E37.1020409@ehas.org> <472789B0.7020006@rvburke.com> <472795B0.60702@ehas.org> <47288819.4010009@soft-com.es> <4728A632.4090906@ehas.org> <472B281B.8080501@soft-com.es> <472B292B.8050501@rvburke.com> <472B3091.2060805@soft-com.es> Message-ID: <472B3462.6060804@soft-com.es> Oswaldo Hernández escribió: > Rafael Villar Burke escribió: > >> Si no es muy extensa (me imagino que no), incluso podría ir como adjunto >> a la lista, para que quede en los archivos. >> Seguro que a mucha gente le interesa. >> > > No se si la lista permite archivos adjuntos, si no llega envio otro > mensaje con codigo en el cuerpo del mensaje. > No ha llegado, aqui va el codigo: /********************************************************** pipe.c 02-11-07 Oswaldo Hernández oswaldo@soft-com.es Captura stdout y stderr de la aplicación a ejecutar y los envia por lineas a la salida std añadiendo el prefijo 'Out:' o 'Err:' dependiendo de donde se haya capturado. Despues del envio de cada linea realiza un flush para asegurar que no quede en el buffer. Compilación: gcc pipe.c -o pipe Uso: pipe aplicacion parametro parametro ... TODO: Añadir parametros para configurar/ampliar funcionalidad: /NOPRE -> no enviar prefijos con los mensajes /IN -> crear pipe para reenviar stdin a la aplicacion y establecer comunicacion bidireccional ***********************************************************/ #include #include #include #include #include #include #define BUFZISE 1024 typedef struct { char buf[BUFZISE]; int bytes; } buffer; void envialinea(buffer *buf, char *prefijo); int main(int argc, char** argv) { pid_t pid; int rv; int outpipe[2]; int errpipe[2]; if (argc <= 1) { printf("Parametros insuficientes, debe especificar la aplicacion a ejecutar.\n"); exit(1); } /* Setup communication pipeline first */ if(pipe(outpipe) || pipe(errpipe)){ fprintf(stderr,"Pipe error!\n"); exit(1); } /* Attempt to fork and check for errors */ if( (pid=fork()) == -1){ fprintf(stderr,"Fork error. Exiting.\n"); /* something went wrong */ exit(1); } if(pid){ int retval; buffer bout; buffer berr; bout.bytes = 0; berr.bytes = 0; close(outpipe[1]); close(errpipe[1]); // lecturas no bloqueantes fcntl(outpipe[0], F_SETFL, O_NONBLOCK); fcntl(errpipe[0], F_SETFL, O_NONBLOCK); // buffer de salida setvbuf(stdout,(char*)NULL,_IONBF,0); // bucle de lecturar hasta que finaliza la aplicacion while(1) { retval = read(outpipe[0], bout.buf+bout.bytes, BUFZISE-bout.bytes); if (retval > 0) { bout.bytes += retval; envialinea(&bout,"Out"); } retval = read(errpipe[0], berr.buf+berr.bytes, BUFZISE-berr.bytes); if (retval > 0) { berr.bytes += retval; envialinea(&berr,"Err"); } if (waitpid(pid, &rv, WNOHANG) != 0) break; } // salida con el codigo de retorno de la aplicacion exit(rv); } else{ char cmd[512]; int x; // stdout y stderr sin buffer setvbuf(stdout,(char*)NULL,_IONBF,0); setvbuf(stderr,(char*)NULL,_IONBF,0); // asignar stdout y stderr a los pipes dup2(outpipe[1],1); dup2(errpipe[1],2); close(outpipe[0]); close(errpipe[0]); // ejecutar aplicacion cmd[0] = 0; for (x = 0; x < argc; x++) { strcat(cmd, argv[x]); strcat(cmd, " "); } // OjO, el primer parametro de argv soy yo argv ++; execvp(argv[0], argv); // Error de ejecucion fprintf(stderr,"execl Error! %d", errno); exit(1); } return 0; } /***************************************** analisis del buffer de entrada, busca '\n', si lo encuentra extrae la linea y la envia, caso contrario espera a que se complete. *****************************************/ void envialinea(buffer *buf, char *prefijo) { int x; int encontrado; // fin de cadena buf->buf[buf->bytes] = 0; while(1) { encontrado = 0; // buscar fin de linea for (x = 0; x < buf->bytes; x++) { if (buf->buf[x] == '\n') { encontrado = x; break; } } if (encontrado) { // enviar linea buf->buf[encontrado] = 0; printf("%s:%s\n", prefijo, buf->buf); fflush(stdout); // desplazar el resto al inicio del buffer encontrado ++; strcpy(buf->buf, buf->buf + encontrado); buf->bytes -= encontrado; } else break; // no hay lineas en el buffer } } -- ***************************************** Oswaldo Hernández oswaldo (@) soft-com (.) es ***************************************** From maengora en gmail.com Fri Nov 2 16:10:14 2007 From: maengora en gmail.com (=?ISO-8859-1?Q?Manuel_Enrique_Gonz=E1lez_Ram=EDrez?=) Date: Fri Nov 2 16:10:23 2007 Subject: [Python-es] Problemas con 2 Combobox Message-ID: Esta es mi situacion: Tengo un formulario en VisualWx que posee varios campos (textos, fechas,etc) y entre ellos tengo 2 ComboBox que toman sus datos de una consulta MySQL. Hasta hace poco no sabia como llenarlos con la consulta, gracias a este foro ya se como. Ahora mi problema es: copio el codigo en el segundo Combo (ambos con el evento EVT_LEFT_MOUSE de VisualWx), lo ejecuto, hago clic en el primer combo y todo va super, pero cuando hago clic en el segundo combo me aparace el siguiente error Traceback (most recent last): cursor.execute('SELECT id,ciudad FROM lugares ORDER BY ciudad ASC') File "c:\Python25\Lib\site-packages\MySQLdb\cursors.py", line 147, in execute charset = db.character_set_name() _mysql_exceptions.InterfaceError: (0,'') Los combos son: cmb_clasemov que toma los datos de la tabla movimientos (entrada, salida, devolucion, exhibicion, ....) cmb_origen que toma los datos de la lugares (Anserma, Pereira, Medellin,.....) ESTE ES PARTE DEL CODIGO.... def ver_mov(self,event): #init function #[1c1]Code event VwX...Don't modify[1c1]# #add your code here cursor.execute('SELECT id,ciudad FROM lugares ORDER BY ciudad asc') res = cursor.fetchall() for reg in res: self.cmb_origen.Append(reg[1]) db.commit() db.close() event.Skip() return #end function def muestra_mov(self,event): #init function #[54f]Code event VwX...Don't modify[54f]# #add your code here cursor.execute('SELECT id,clasemov FROM movimientos ORDER BY clasemov asc') resultado = cursor.fetchall() for registro in resultado: self.cmb_clasemov.Append(registro[1]) db.commit() db.close() event.Skip() return #end function Traceback (most recent last): cursor.execute('SELECT id,ciudad FROM lugares ORDER BY ciudad ASC') File "c:\Python25\Lib\site-packages\MySQLdb\cursors.py", line 147, in execute charset = db.character_set_name() _mysql_exceptions.InterfaceError: (0,'') A todos muchas gracias por la ayuda que me puedan prestar From ingjop en gmail.com Fri Nov 2 16:11:49 2007 From: ingjop en gmail.com (Jorge OP) Date: Fri Nov 2 16:11:53 2007 Subject: [Python-es] =?utf-8?q?Se=C3=B1ales_en_py-gtk?= Message-ID: Hola, estoy creando una clase que utiliza una señal personalizada para comunicarse y tengo un problema que espero me puedan ayudar a solucionar. Trato de explicar el contexto: - Mi programa crea inicialmente un menu donde el usuario debe escoger una opción. - El usuario escoje y mi programa lanza una ventana que usa señales personalizadas para comunicarse. - La ventana funciona muy bien, hace lo que debe hacer y termina regresando al menu inicial - Si el usuario vuelve a escoger la misma opcion, ya no vuelve a funcionar y se cierra el programa. La señal la estoy creando asi: class Ventana(gtk.Window): def __init__(self): ## Defino la ventana, y sus controles ## Creo la nueva señal: gobject.signal_new("data_entered", Ventana, gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, ()) ## Aqui viene el resto de la definicion de la clase...... Como dije arriba, la primera vez que se ejecuta funciona muy bien. El problema es la segunda vez que me sale un warning como este: Warning: gsignal.c:1251: signal "data_entered" already exists in the `GtkWindow' class ancestry y luego termina con un error: RuntimeError: could not create signal Lo que entiendo es que la nueva señal (data_entered) la está asignando a la clase padre GtkWindow y no a mi clase Ventana (a pesar que en la funcion signal_new yo le indico lo contrario). Qué puede estar pasando? Cualquier idea o ayuda será bienvenida. Muchas gracias From a.porrua en gmail.com Fri Nov 2 16:16:39 2007 From: a.porrua en gmail.com (tny) Date: Fri Nov 2 16:16:34 2007 Subject: [Python-es] subprocess.popen, capturar stdout :) In-Reply-To: <472B3004.4010107@soft-com.es> References: <472744E8.7050304@soft-com.es> <47275406.9090702@ehas.org> <472765BA.80803@soft-com.es> <47276C8E.3010609@soft-com.es> <47277E37.1020409@ehas.org> <472789B0.7020006@rvburke.com> <472795B0.60702@ehas.org> <47288819.4010009@soft-com.es> <4728A632.4090906@ehas.org> <472B281B.8080501@soft-com.es> <472B2AA1.9080203@ehas.org> <472B3004.4010107@soft-com.es> Message-ID: <1194016599.6151.1.camel@skynet> El vie, 02-11-2007 a las 15:11 +0100, Oswaldo Hernández escribió: > Arnau Sanchez escribió: > > Oswaldo Hernández escribió: > > > >> Ademas, hay otro problema añadido, tengo que capturar stdout y stderr > >> simultáneamente, los mensajes pueden venir en cualquier momento por > >> cualquiera de los dos canales. Como readline() es bloqueante, si > >> espero por stdin, no capturo los mensajes de stderr y a la inversa. > >> Probe utilizando read y os.read pero no me funcionaban bien (o no supe > >> hacerlos funcionar). > > > > Por si acaso te sirve: > > > > subprocess.Popen(..., stderr=subprocess.STDOUT, ...) > > > >> Tomando la idea de utilizar un programa auxiliar he creado un > >> programita en C para hacer esta funcion. > > > > ¡Pero eso mismo que has hecho en C se debería poder hacer en Python! > > Si dices que pipes no se bloquea el programa, ya tienes la solución, > > impleméntalo con pipes también en Python (os.pipe). > > Creeme que lo he intentado, el problema que he tenido ha sido con readline(), > line = stdin.readline() > queda esperando indefinidamente hasta que entre una linea por stdin, mientras tando pueden estar > llegando mensajes por stderr que no son capturados. He intentado utilizad read, pero no lo he > conseguido. > ¿Con hilos? un hilo para stdin y otro para stderr que lancen eventos cuando reciben datos, y el hilo principal con un loop a la espera dichos eventos. From markuz en islascruz.org Fri Nov 2 17:23:19 2007 From: markuz en islascruz.org (Marco Antonio Islas Cruz) Date: Fri Nov 2 17:23:20 2007 Subject: [Python-es] =?ISO-8859-1?Q?Se=F1ales?= en py-gtk In-Reply-To: References: Message-ID: <1194020599.7660.3.camel@cucusa.islascruz.org> Hola, antes de crear una senial debes asegurarte de que no haya sido creada antes. if gobject.signal_lookup("data_entered",self) == 0: gobject.signal_new("data_entered", Ventana, gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, ()) On Fri, 2007-11-02 at 10:11 -0500, Jorge OP wrote: > Hola, estoy creando una clase que utiliza una señal personalizada para > comunicarse y tengo un problema que espero me puedan ayudar a solucionar. > Trato de explicar el contexto: > > - Mi programa crea inicialmente un menu donde el usuario debe escoger una > opción. > - El usuario escoje y mi programa lanza una ventana que usa señales > personalizadas para comunicarse. > - La ventana funciona muy bien, hace lo que debe hacer y termina regresando > al menu inicial > - Si el usuario vuelve a escoger la misma opcion, ya no vuelve a funcionar y > se cierra el programa. > > La señal la estoy creando asi: > > class Ventana(gtk.Window): > > def __init__(self): > ## Defino la ventana, y sus controles > ## Creo la nueva señal: > > gobject.signal_new("data_entered", Ventana, gobject.SIGNAL_RUN_LAST, > gobject.TYPE_NONE, ()) > > ## Aqui viene el resto de la definicion de la clase...... > > Como dije arriba, la primera vez que se ejecuta funciona muy bien. El > problema es la segunda vez que me sale un warning como este: > > Warning: gsignal.c:1251: signal "data_entered" already exists in the > `GtkWindow' class ancestry > > y luego termina con un error: > > RuntimeError: could not create signal > > Lo que entiendo es que la nueva señal (data_entered) la está asignando a la > clase padre GtkWindow y no a mi clase Ventana (a pesar que en la funcion > signal_new yo le indico lo contrario). Qué puede estar pasando? Cualquier > idea o ayuda será bienvenida. > > Muchas gracias > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes -- <--Linux... Because I'm Free--> Marco Antonio Islas Cruz "Markuz" Linux User #280229 markuz@islascruz.org markuz@unixmexico.org markuz@linuxpozarica.com marco.islas@gmail.com islacruz@yahoo.com http://www.islascruz.org http://sourceforge.net/projects/gpkg/ http://www.linuxpozarica.com ------------ próxima parte ------------ Se ha borrado un mensaje que no está en formato texto plano... Nombre : no disponible Tipo : application/pgp-signature Tamaño : 189 bytes Descripción: This is a digitally signed message part Url : /archivos/python-es/attachments/20071102/49958700/attachment.pgp From ingjop en gmail.com Fri Nov 2 17:59:19 2007 From: ingjop en gmail.com (Jorge OP) Date: Fri Nov 2 17:59:25 2007 Subject: =?UTF-8?Q?Re:_[Python-es]_Se=C3=B1ales_en_py-gtk?= In-Reply-To: <1194020599.7660.3.camel@cucusa.islascruz.org> References: <1194020599.7660.3.camel@cucusa.islascruz.org> Message-ID: Muchas gracias. Funciono muy bien :-) Slds On 11/2/07, Marco Antonio Islas Cruz wrote: > > Hola, antes de crear una senial debes asegurarte de que no haya sido > creada antes. > > if gobject.signal_lookup("data_entered",self) == 0: > gobject.signal_new("data_entered", > Ventana, > gobject.SIGNAL_RUN_LAST, > gobject.TYPE_NONE, ()) > > > > On Fri, 2007-11-02 at 10:11 -0500, Jorge OP wrote: > > Hola, estoy creando una clase que utiliza una señal personalizada para > > comunicarse y tengo un problema que espero me puedan ayudar a > solucionar. > > Trato de explicar el contexto: > > > > - Mi programa crea inicialmente un menu donde el usuario debe escoger > una > > opción. > > - El usuario escoje y mi programa lanza una ventana que usa señales > > personalizadas para comunicarse. > > - La ventana funciona muy bien, hace lo que debe hacer y termina > regresando > > al menu inicial > > - Si el usuario vuelve a escoger la misma opcion, ya no vuelve a > funcionar y > > se cierra el programa. > > > > La señal la estoy creando asi: > > > > class Ventana(gtk.Window): > > > > def __init__(self): > > ## Defino la ventana, y sus controles > > ## Creo la nueva señal: > > > > gobject.signal_new("data_entered", Ventana, > gobject.SIGNAL_RUN_LAST, > > gobject.TYPE_NONE, ()) > > > > ## Aqui viene el resto de la definicion de la clase...... > > > > Como dije arriba, la primera vez que se ejecuta funciona muy bien. El > > problema es la segunda vez que me sale un warning como este: > > > > Warning: gsignal.c:1251: signal "data_entered" already exists in the > > `GtkWindow' class ancestry > > > > y luego termina con un error: > > > > RuntimeError: could not create signal > > > > Lo que entiendo es que la nueva señal (data_entered) la está asignando a > la > > clase padre GtkWindow y no a mi clase Ventana (a pesar que en la funcion > > signal_new yo le indico lo contrario). Qué puede estar pasando? > Cualquier > > idea o ayuda será bienvenida. > > > > Muchas gracias > > _______________________________________________ > > Lista de correo Python-es > > http://listas.aditel.org/listinfo/python-es > > FAQ: http://listas.aditel.org/faqpyes > -- > <--Linux... Because I'm Free--> > Marco Antonio Islas Cruz > "Markuz" > Linux User #280229 > markuz@islascruz.org > markuz@unixmexico.org > markuz@linuxpozarica.com > marco.islas@gmail.com > islacruz@yahoo.com > http://www.islascruz.org > http://sourceforge.net/projects/gpkg/ > http://www.linuxpozarica.com > > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes > > From dmlistapython en gmail.com Fri Nov 2 18:41:39 2007 From: dmlistapython en gmail.com (Daniel) Date: Fri Nov 2 18:43:23 2007 Subject: [Python-es] And y Or Message-ID: <1194025299.4908.4.camel@pcdaniel.cdi> Hola chicos: No entiendo muy bien el tema de los nexos lógicos en python, sé que devuelve el primero sino el segundo, pero no entiendo la ventaja (o no) del sistema. En tal caso como sería el siguiente pseudocódigo empleando python si (x>0 y z="pppp") entonces .... Gracias. DAniel From listas en soft-com.es Fri Nov 2 18:44:38 2007 From: listas en soft-com.es (=?UTF-8?B?T3N3YWxkbyBIZXJuw6FuZGV6?=) Date: Fri Nov 2 18:44:58 2007 Subject: [Python-es] subprocess.popen, capturar stdout :) In-Reply-To: <1194016599.6151.1.camel@skynet> References: <472744E8.7050304@soft-com.es> <47275406.9090702@ehas.org> <472765BA.80803@soft-com.es> <47276C8E.3010609@soft-com.es> <47277E37.1020409@ehas.org> <472789B0.7020006@rvburke.com> <472795B0.60702@ehas.org> <47288819.4010009@soft-com.es> <4728A632.4090906@ehas.org> <472B281B.8080501@soft-com.es> <472B2AA1.9080203@ehas.org> <472B3004.4010107@soft-com.es> <1194016599.6151.1.camel@skynet> Message-ID: <472B6206.9010601@soft-com.es> tny escribió: > > ¿Con hilos? > un hilo para stdin y otro para stderr que lancen eventos cuando reciben > datos, y el hilo principal con un loop a la espera dichos eventos. > Creo que has dado con la solución a la lectura de ambos pipes simultáneamente :) Estoy viendo los eventos de las threads y no me aclaro mucho con ellos, asi que la prueba la he realizado utilizando un callback. Tampoco habia utilizado el lock de las threads por lo que no tengo muy claro si lo hecho correctamente. import subprocess import threading def runapp(app): pr = subprocess.Popen(app.split(), stdin=None, stdout = subprocess.PIPE, stderr=subprocess.PIPE) # lanzar treads tout = readfile(pr.stdout, "StdOut", analizadatos) terr = readfile(pr.stderr, "StdErr", analizadatos) tout.start() terr.start() pr.wait() print "finalizado con codigo %s" % pr.poll() def analizadatos(pipa, msg): print "%s:%s" % (pipa, msg) class readfile(threading.Thread): lck = threading.Lock() def __init__(self, file, pipa, callback): threading.Thread.__init__(self) self.file = file self.pipa = pipa self.callback = callback def run(self): while 1: msg = self.file.readline() if not msg: break #bloquear, ejecutar funcion y desbloquear self.lck.acquire() self.callback(self.pipa, msg) self.lck.release() runapp("ping www.google.es") -- ***************************************** Oswaldo Hernández oswaldo (@) soft-com (.) es ***************************************** From a.porrua en gmail.com Fri Nov 2 19:05:07 2007 From: a.porrua en gmail.com (tny) Date: Fri Nov 2 19:05:05 2007 Subject: [Python-es] subprocess.popen, capturar stdout :) In-Reply-To: <472B6206.9010601@soft-com.es> References: <472744E8.7050304@soft-com.es> <47275406.9090702@ehas.org> <472765BA.80803@soft-com.es> <47276C8E.3010609@soft-com.es> <47277E37.1020409@ehas.org> <472789B0.7020006@rvburke.com> <472795B0.60702@ehas.org> <47288819.4010009@soft-com.es> <4728A632.4090906@ehas.org> <472B281B.8080501@soft-com.es> <472B2AA1.9080203@ehas.org> <472B3004.4010107@soft-com.es> <1194016599.6151.1.camel@skynet> <472B6206.9010601@soft-com.es> Message-ID: <1194026707.7243.11.camel@skynet> El vie, 02-11-2007 a las 18:44 +0100, Oswaldo Hernández escribió: > tny escribió: > > > > > ¿Con hilos? > > un hilo para stdin y otro para stderr que lancen eventos cuando reciben > > datos, y el hilo principal con un loop a la espera dichos eventos. > > > > Creo que has dado con la solución a la lectura de ambos pipes simultáneamente :) > > Estoy viendo los eventos de las threads y no me aclaro mucho con ellos, asi que la prueba la he > realizado utilizando un callback. jejej, a eso me refería... es que yo en mi ignorancia lo llamo eventos... > Tampoco habia utilizado el lock de las threads por lo que no tengo muy claro si lo hecho correctamente. Sólo he empleado hilos en un proyecto, y no utilicé threading si no thread. Con thread hubiera empleado una variable global como lock o la hubiera pasado como parámetro. Pero con thrading me parece que has hecho lo más correcto, usar un método de la clase, que como tal comparten todas las instancias. > import subprocess > import threading > > def runapp(app): > pr = subprocess.Popen(app.split(), stdin=None, stdout = subprocess.PIPE, stderr=subprocess.PIPE) > > # lanzar treads > tout = readfile(pr.stdout, "StdOut", analizadatos) > terr = readfile(pr.stderr, "StdErr", analizadatos) > tout.start() > terr.start() > > pr.wait() > print "finalizado con codigo %s" % pr.poll() > > def analizadatos(pipa, msg): > print "%s:%s" % (pipa, msg) > > class readfile(threading.Thread): > lck = threading.Lock() > def __init__(self, file, pipa, callback): > threading.Thread.__init__(self) > self.file = file > self.pipa = pipa > self.callback = callback > def run(self): > while 1: > msg = self.file.readline() > if not msg: > break > #bloquear, ejecutar funcion y desbloquear > self.lck.acquire() > self.callback(self.pipa, msg) > self.lck.release() > > > runapp("ping www.google.es") From markuz en islascruz.org Fri Nov 2 19:28:20 2007 From: markuz en islascruz.org (Marco Antonio Islas Cruz) Date: Fri Nov 2 19:28:19 2007 Subject: [Python-es] And y Or In-Reply-To: <1194025299.4908.4.camel@pcdaniel.cdi> References: <1194025299.4908.4.camel@pcdaniel.cdi> Message-ID: <1194028100.7660.8.camel@cucusa.islascruz.org> if x > 0 and z='pppp': #codigo aqui On Fri, 2007-11-02 at 14:41 -0300, Daniel wrote: > Hola chicos: > No entiendo muy bien el tema de los nexos lógicos en python, sé que > devuelve el primero sino el segundo, pero no entiendo la ventaja (o no) > del sistema. > En tal caso como sería el siguiente pseudocódigo empleando python > si (x>0 y z="pppp") entonces .... > > Gracias. DAniel > > > > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes -- <--Linux... Because I'm Free--> Marco Antonio Islas Cruz "Markuz" Linux User #280229 markuz@islascruz.org markuz@unixmexico.org markuz@linuxpozarica.com marco.islas@gmail.com islacruz@yahoo.com http://www.islascruz.org http://sourceforge.net/projects/gpkg/ http://www.linuxpozarica.com ------------ próxima parte ------------ Se ha borrado un mensaje que no está en formato texto plano... Nombre : no disponible Tipo : application/pgp-signature Tamaño : 189 bytes Descripción: This is a digitally signed message part Url : /archivos/python-es/attachments/20071102/dfc1bbe6/attachment.pgp From arnau en ehas.org Fri Nov 2 19:28:27 2007 From: arnau en ehas.org (Arnau Sanchez) Date: Fri Nov 2 19:28:54 2007 Subject: [Python-es] And y Or In-Reply-To: <1194025299.4908.4.camel@pcdaniel.cdi> References: <1194025299.4908.4.camel@pcdaniel.cdi> Message-ID: <472B6C4B.1060906@ehas.org> Daniel escribió: > No entiendo muy bien el tema de los nexos lógicos en python, sé que > devuelve el primero sino el segundo, pero no entiendo la ventaja (o no) > del sistema. Si te entiendo bien, preguntas sobre la posibilidad de usar operadores and/or como nexos lógicos. Lo básico es saber que: - x or y or z Devuelve el primero elemento verdadero (sin evaluar el resto). Si ninguno es verdadero, devuelve el último. - x and y and z Devuelve el primero elemento falso (sin evaluar el resto). Si todos son verdaderos, devuelve el último. Este comportamiento permite hacer cosas como ésta (sacado de un artículo de David Mertz): if cond1: fun1() elif cond2: fun2() else: fun3() (cond1 and fun1()) or (cond2 and fun2()) or fun3() Ojo que, aunque no lo dice, esto es cierto sólo si las funciones funX() devuelven un valor verdadero, en caso contrario se seguirá evaluando la expresión. Si eso no se puede garantizar, se tiene que adaptar: ((cond1 and func1) or (cond2 and func2) or func3)() > En tal caso como sería el siguiente pseudocódigo empleando python > si (x>0 y z="pppp") entonces .... (x > 0) and (z == "pppp") and funcion() ... El tema suele salir en textos sobre programación funcional, por ejemplo: http://gnosis.cx/publish/programming/charming_python_13.html El código resultante puede quedar ofuscado, y en general se recomienda usar estructuras if/elif/else. arnau From alexis.roda.villalonga en gmail.com Fri Nov 2 20:29:15 2007 From: alexis.roda.villalonga en gmail.com (Alexis Roda) Date: Fri Nov 2 20:29:24 2007 Subject: [Python-es] And y Or In-Reply-To: <1194025299.4908.4.camel@pcdaniel.cdi> References: <1194025299.4908.4.camel@pcdaniel.cdi> Message-ID: <472B7A8B.6090504@gmail.com> En/na Daniel ha escrit: > Hola chicos: > No entiendo muy bien el tema de los nexos lógicos en python, sé que > devuelve el primero sino el segundo, pero no entiendo la ventaja (o no) > del sistema. En python se consideran falsos el valor False, las listas y tuplas vacías, None, la cadena vacia y el numero 0 (puede que me deje alguno). Cualquier otra cosa se considera verdadera (True). En tus clases puedes implementar el método __nonzero__ para asignar un valor de verdad o falsedad a las instancias según te interese. El operador or evalúa a verdadero si *alguno* de sus operandos es verdadero (según lo dicho en el primer párrafo) y el operador and evalúa a cierto si *todos* sus operandos son verdaderos. Ahora bien, fíjate que en algunos casos no es necesario comprobar el valor de todos los operandos para determinar el valor de la expresión. Por ejemplo: [1, 2] or 0 como el primero operando es verdadero y or requiere que *algún* operando sea verdadero ya sabemos que la expresión será verdadera, no hace falta evaluar el segundo operando. De la misma forma, si algún operando en un and es falso sabemos de antemano que el resultado será falso. Por el motivo que fuera (supongo que influencias de algún otro lenguaje) los diseñadores de python decidieron que el resultado de una operación booleana fuera el *valor* del último operando evaluado en lugar de True o False. Así: [1, 2] or 0 -> [1,2] que es verdadero 0 or 2 -> 2, verdadero 0 or [] -> [], falso 1 and [] -> [], falso 1 or 2 and [] -> 1, verdadero (1 or 2) and [] -> [], falso etc. En algunos casos esto te puede ahorrar algún if, pero el código resulta más difícil de entender en general. > En tal caso como sería el siguiente pseudocódigo empleando python > si (x>0 y z="pppp") entonces .... Depende de lo que haya tras el "entonces". En un caso tipo: si (x>0 y z="pppp") entonces imprime "hola" podría traducirse por: if x>0 and z=="pppp" : print "hola" Mientras que en: si (x>0 y z="pppp") entonces y=1 sino y=2 podría traducirse también por: y=(x>0 and z=="pppp" and 1) or 2 aprovechando las propiedades del and y del or en python. La regla general es que solo puedes combinar expresiones (trozos de código que evalúen a un valor) no instrucciones arbitrarias. En lenguajes funcionales estas construcciones son mucho mas versátiles que en python. El ejemplo que imprime "hola" podría traducirse en elisp como: (and (> x 0) (string-equal z "pppp") (print "hola")) mientras que en python: (x>0 and z=="pppp") and print "hola" dará error de sintaxis ya que print "hola" no es una expresión (añadiendo paréntesis funcionaria en python3k ya que print es una función, pero no con otras construcciones). La otra posibilidad: print (x>0 and z=="pppp") and "hola" imprimirá siempre alguna cosa, "hola" cuando la expresión sea verdadera y False cuando sea falsa. Lo cual no es equivalente a la codificación original. En resumen, no te compliques la vida y utiliza bloques if/elif/else cuando hagan falta :) Saludos From user-6097400.0094f0-1 en xing.com Sat Nov 3 06:02:27 2007 From: user-6097400.0094f0-1 en xing.com (Hector Miuler Malpica Gallegos) Date: Sat Nov 3 06:02:35 2007 Subject: [Python-es] =?utf-8?q?Invitaci=C3=B3n_a_mi_red_de_XING?= Message-ID: <20071103050228.25E564A571@obc-crn42-2.rz.epublica.de> Hola, Ésta es una invitación a XING - te lo recomiendo. Es una forma muy efectiva de establecer contactos con gente de tu sector. Además, no cuesta nada. Saludos, Hector Miuler Malpica Gallegos ----------------------------------------------------------------------- Hector Miuler Malpica Gallegos te invita a descubrir la red de contactos profesionales XING: http://www.xing.com/go/inv/13402247.d44710 No deseo recibir más invitaciones a XING: http://www.xing.com/go/opt_out_invite/U2FsdGVkX1-49bornW4FGnXRejtF7evXNF6Ds_IhzvGheQDnYVBHIOg0oEkm0qsL From py en ch3m4.org Sat Nov 3 11:32:44 2007 From: py en ch3m4.org (Chema Cortes) Date: Sat Nov 3 11:39:37 2007 Subject: [Python-es] And y Or In-Reply-To: <1194025299.4908.4.camel@pcdaniel.cdi> References: <1194025299.4908.4.camel@pcdaniel.cdi> Message-ID: <200711031132.45361.py@ch3m4.org> El Friday 02 November 2007 18:41:39 Daniel escribió: > No entiendo muy bien el tema de los nexos lógicos en python, sé que > devuelve el primero sino el segundo, pero no entiendo la ventaja (o no) > del sistema. > En tal caso como sería el siguiente pseudocódigo empleando python > si (x>0 y z="pppp") entonces .... Creo que ya te lo han explicado bastante bien. Desde el principio de la programación (incluso antes, cuando la álgebra de Boole), se consideró que se podían optimizar una expresión lógica "cortocicuitando" su evaluación. Aún así, hay lenguajes (como el Visual Basic) que evalúan primero todos los miembros de la expresión lógica antes de pasar a su evaluación. Si fuéramos puristas, siempre habría que hacerlo así si aplicáramos las prioridades de los operadores. Pero en la gran mayoría de las ocasiones no cambia nada el resultado de la expresión. Casos excepcionales: por ejemplo éste (1 or 1/0) Si evaluaras ambos miembros se produciría un error de división por cero. Al aplicarse el cortocicuito, se evalúa siempre como 1. Un uso muy común era para evitar errores: if (not Exists(a) or a<0) then a=0 Es una comprobación típica de los argumentos que entran en una función. Sin cortocicuito no funcionaría tal como esperamos ya que el segundo miembro de la expresión lógica fallaría de no existir la variable. Otro uso muy común es para emular el operador ternario: a?b:c --> a and b or c Con el python 2.5 se transforma en: b if a else c From aciddized en gmail.com Sat Nov 3 21:34:14 2007 From: aciddized en gmail.com (Robert C.) Date: Sat Nov 3 21:34:19 2007 Subject: [Python-es] La paradoja Python Message-ID: <786142880711031334q71e14504v6fe745ce66165041@mail.gmail.com> Hola lista, quizás os interese: http://mundogeek.net/archivos/2007/10/23/la-paradoja-python/ Saludos. From acido69 en gmail.com Sat Nov 3 22:19:15 2007 From: acido69 en gmail.com (acido || cuatroxl.org) Date: Sat Nov 3 22:19:24 2007 Subject: [Python-es] hola, tengo un problema con pyDev In-Reply-To: <2c9fb0dd0711012038l50de186fhdb166f17377ea2a7@mail.gmail.com> References: <2c9fb0dd0711012038l50de186fhdb166f17377ea2a7@mail.gmail.com> Message-ID: Hola y gracias por responder. haciendo caso a Chema, he ejecutado ese code y me devuelve esto: ['C:\\Documents and Settings\\acido69\\workspace\\eclipse\\caracteres\\src', 'C:\\jython2.2.1\\Lib', 'C:\\Documents and Settings\\acido69\\workspace\\eclipse\\caracteres\\src', 'C:\\Archivos de programa\\eclipse\\plugins\\org.python.pydev_1.3.9\\PySrc', 'C:\\Archivos de programa\\eclipse\\__classpath__', 'C:\\jython2.2.1', 'C:\\Archivos de programa\\Java\\jre1.6.0_03\\lib\\resources.jar', 'C:\\Archivos de programa\\Java\\jre1.6.0_03\\lib\\rt.jar', 'C:\\Archivos de programa\\Java\\jre1.6.0_03\\lib\\jsse.jar', 'C:\\Archivos de programa\\Java\\jre1.6.0_03\\lib\\jce.jar', 'C:\\Archivos de programa\\Java\\jre1.6.0_03\\lib\\ext\\dnsns.jar', 'C:\\Archivos de programa\\Java\\jre1.6.0_03\\lib\\ext\\sunjce_provider.jar', 'C:\\Archivos de programa\\Java\\jre1.6.0_03\\lib\\ext\\sunmscapi.jar', 'C:\\Archivos de programa\\Java\\jre1.6.0_03\\lib\\ext\\sunpkcs11.jar', '__classpath__'] 2.2.1 java1.6.0_03 jython.jar Me podrías decir porfavor donde se supone que tiene que estar el "re.py "?????? From maengora en gmail.com Sat Nov 3 23:38:20 2007 From: maengora en gmail.com (=?ISO-8859-1?Q?Manuel_Enrique_Gonz=E1lez_Ram=EDrez?=) Date: Sat Nov 3 23:38:26 2007 Subject: [Python-es] Se repite la consulta MySQL Message-ID: Hola, me estoy volviendo loco con estos combobox pero bueno, la idea es aprender. Ahora mi inquietud es la siguiente: Solucionado los anteriores inconvenientes descubri que en cada combo debo definir la consulta y no dejar algunos datos como variables globales, me explico, me refiero a donde tu defines como te conectas.... db = my.connect (host='localhost',user='root',passwd='******',db='inventario') cursor = db.cursor() Me funciono colocandolo en cada evento (recuerden que estoy trabajando con VisualWx) Pero al solucionar una cosa se me desbarata otra... Resulta que cuando doy clic por primera vez en el combo (por ejemplo origen) me aparece la consulta en el combo que son 4 ciudades (ANSERMA, PEREIRA, RIOSUCION, VITERBO), pero cuando le vuelvo a dar clic en el mismo combo, sin cerrar el formulario o si me equivoque al seleccionar una de las ciudades y vuelvo inmediatamente a dar clic sobre el combo, SE ME REPITE LA LISTA de elementos del combo. Ejemplo. Clic por primera vez me muestra. ANSERMA PEREIRA RIOSUCIO VITERBO Clic por segunda vez consecutiva ANSERMA PEREIRA RIOSUCIO VITERBO ANSERMA PEREIRA RIOSUCIO VITERBO Necesito que solo se conserve los campos que realmente son, sin que se me repita la lista cada vez que se de clic consecutivamente. Aqui esta parte del codigo..... def ver_origen(self,event): #init function #[596]Code event VwX...Don't modify[596]# #add your code here db = my.connect (host='localhost',user='root',passwd='*******',db='inventario') cursor = db.cursor() cursor.execute('SELECT ciudad FROM lugares ORDER BY ciudad asc') res = cursor.fetchall() for reg in res: self.cmb_origen.Append(reg[0]) db.commit() db.close() return #end function Gracias From jjrojoc en hotmail.com Sun Nov 4 01:24:52 2007 From: jjrojoc en hotmail.com (=?iso-8859-1?Q?Juan_Jos=E9_Rojo?=) Date: Sun Nov 4 01:24:56 2007 Subject: [Python-es] Se repite la consulta MySQL In-Reply-To: References: Message-ID: ----------------------------------------> Date: Sat, 3 Nov 2007 17:38:20 -0500> From: maengora@gmail.com> To: python-es@aditel.org> Subject: [Python-es] Se repite la consulta MySQL>> Hola, me estoy volviendo loco con estos combobox pero bueno, la idea es> aprender.>> Ahora mi inquietud es la siguiente:> Solucionado los anteriores inconvenientes descubri que en cada combo debo> definir la consulta y no dejar algunos> datos como variables globales, me explico, me refiero a donde tu defines> como te conectas....> db = my.connect> (host='localhost',user='root',passwd='******',db='inventario')> cursor = db.cursor()> Me funciono colocandolo en cada evento (recuerden que estoy trabajando con> VisualWx)>> Pero al solucionar una cosa se me desbarata otra...>> Resulta que cuando doy clic por primera vez en el combo (por ejemplo origen)> me aparece la consulta en el combo> que son 4 ciudades (ANSERMA, PEREIRA, RIOSUCION, VITERBO), pero cuando le> vuelvo a dar clic en el mismo> combo, sin cerrar el formulario o si me equivoque al seleccionar una de las> ciudades y vuelvo inmediatamente a> dar clic sobre el combo, SE ME REPITE LA LISTA de elementos del combo.> Ejemplo.> Clic por primera vez me muestra.> ANSERMA> PEREIRA> RIOSUCIO> VITERBO>> Clic por segunda vez consecutiva> ANSERMA> PEREIRA> RIOSUCIO> VITERBO> ANSERMA> PEREIRA> RIOSUCIO> VITERBO>> Necesito que solo se conserve los campos que realmente son, sin que se me> repita la lista cada vez que se> de clic consecutivamente.>> Aqui esta parte del codigo.....> def ver_origen(self,event): #init function> #[596]Code event VwX...Don't modify[596]#> #add your code here> db = my.connect> (host='localhost',user='root',passwd='*******',db='inventario')> cursor = db.cursor()> cursor.execute('SELECT ciudad FROM lugares ORDER BY ciudad asc')>> res = cursor.fetchall()>> for reg in res:> self.cmb_origen.Append(reg[0])>> db.commit()> db.close()> return #end function>>>>> Gracias> _______________________________________________> Lista de correo Python-es> http://listas.aditel.org/listinfo/python-es> FAQ: http://listas.aditel.org/faqpyes Todo ese código debería estar fuera de la función, ya que parece que se ejecuta esa función cada vez que pinchas, solamente se debería cargar una vez al iniciar el programa. _________________________________________________________________ Express yourself instantly with MSN Messenger! Download today it's FREE! http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/ From atlasoftcorp en yahoo.com.ar Sun Nov 4 04:24:35 2007 From: atlasoftcorp en yahoo.com.ar (Juan Pablo Cisneros) Date: Sun Nov 4 04:24:52 2007 Subject: [Python-es] Se repite la consulta MySQL In-Reply-To: References: Message-ID: <472D3B73.6040703@yahoo.com.ar> Juan José Rojo wrote: > ----------------------------------------> Date: Sat, 3 Nov 2007 17:38:20 -0500> From: maengora@gmail.com> To: python-es@aditel.org> Subject: [Python-es] Se repite la consulta MySQL>> Hola, me estoy volviendo loco con estos combobox pero bueno, la idea es> aprender.>> Ahora mi inquietud es la siguiente:> Solucionado los anteriores inconvenientes descubri que en cada combo debo> definir la consulta y no dejar algunos> datos como variables globales, me explico, me refiero a donde tu defines> como te conectas....> db = my.connect> (host='localhost',user='root',passwd='******',db='inventario')> cursor = db.cursor()> Me funciono colocandolo en cada evento (recuerden que estoy trabajando con> VisualWx)>> Pero al solucionar una cosa se me desbarata otra...>> Resulta que cuando doy clic por primera vez en el combo (por ejemplo origen)> me aparece la consulta en el combo> que son 4 ciudades (ANSERMA, PEREIRA, RIOSUCION, VITERBO), pero cuando le> vuelvo a dar clic en el mismo> combo, sin cerrar el formulario o si me equivoque al seleccionar una de las> ciudades y vuelvo inmediatamente a> dar clic sobre el combo, SE ME REPITE LA LISTA de elementos del combo.> Ejemplo.> Clic por primera vez me muestra.> ANSERMA> PEREIRA> RIOSUCIO> VITERBO>> Clic por segunda vez consecutiva> ANSERMA> PEREIRA> RIOSUCIO> VITERBO> ANSERMA> PEREIRA> RIOSUCIO> VITERBO>> Necesito que solo se conserve los campos que realmente son, sin que se me> repita la lista cada vez que se> de clic consecutivamente.>> Aqui esta parte del codigo.....> def ver_origen(self,event): #init function> #[596]Code event VwX...Don't modify[596]#> #add your code here> db = my.connect> (host='localhost',user='root',passwd='*******',db='inventario')> cursor = db.cursor()> cursor.execute('SELECT ciudad FROM lugares ORDER BY ciudad asc')>> res = cursor.fetchall()>> for reg in res:> self.cmb_origen.Append(reg[0])>> db.commit()> db.close()> return #end function>>>>> Gracias> _______________________________________________> Lista de correo Python-es> http://listas.aditel.org/listinfo/python-es> FAQ: http://listas.aditel.org/faqpyes > > > Todo ese código debería estar fuera de la función, ya que parece que se ejecuta esa función cada vez que pinchas, solamente se debería cargar una vez al iniciar el programa. > No soy un experto, pero si los datos que tenes que cargar varian "de un click a otro", podes chequear si ya está en la lista de la CB; de estarlo, no lo agregas, si no, no.. O bien borras todos los elementos del CB antes de cargar los nuevos... repito: NO soy un experto, debe haber mejores formas... Suerte ! From daironfrias en gmail.com Sun Nov 4 08:04:53 2007 From: daironfrias en gmail.com (=?ISO-8859-1?Q?Dairon_P=E9rez_Fr=EDas?=) Date: Sun Nov 4 08:04:58 2007 Subject: [Python-es] Problema... necesito ayuda Message-ID: <366fefdb0711040004s610747f3g5ce74e27207c08fb@mail.gmail.com> Hola Comunidad de Python-es, estoy realizando un pequenno proyectico en el cual necesito guardar datos entrados por el usuario en un fichero que ya contiene otros datos, es decir para explicarlo de una forma mas cencilla, quiero guardar unas cuantas clases en un solo fichero y crear algo asi como una libreria, .dll algo parecido pero para uzarlo en linux, pero no se como hacerlo, si alguien pudiera darme un norte, saludos D.Frias From javi en bertayjavi.com Sun Nov 4 10:40:35 2007 From: javi en bertayjavi.com (Javi) Date: Sun Nov 4 10:40:40 2007 Subject: [Python-es] Se repite la consulta MySQL References: Message-ID: <000b01c81ec6$c1f18d10$0201a8c0@portatil> Bajo mi punto de vista lo unico que debes hacer es borrar los datos del combo antes de cargarlo. Simplemente pon la linea self.cmb_origen .Clear() antes del bulce for, te quedaria algo asi res = cursor.fetchall() self.cmb_origen.Clear() for reg in res: self.cmb_origen.Append(reg[0]) db.commit() db.close() return #end function From markuz en islascruz.org Sun Nov 4 16:07:38 2007 From: markuz en islascruz.org (Marco Antonio Islas Cruz) Date: Sun Nov 4 16:07:30 2007 Subject: [Python-es] Problema... necesito ayuda In-Reply-To: <366fefdb0711040004s610747f3g5ce74e27207c08fb@mail.gmail.com> References: <366fefdb0711040004s610747f3g5ce74e27207c08fb@mail.gmail.com> Message-ID: <1194188858.6053.12.camel@cucusa.islascruz.org> En la documentacion de python encontraras como crear modulos y paquetes. On Sun, 2007-11-04 at 08:04 +0100, Dairon Pérez Frías wrote: > Hola Comunidad de Python-es, > estoy realizando un pequenno proyectico en el cual necesito guardar datos > entrados por el usuario en un fichero que ya contiene otros datos, es decir > para explicarlo de una forma mas cencilla, > quiero guardar unas cuantas clases en un solo fichero y crear algo asi como > una libreria, .dll algo parecido pero para uzarlo en linux, pero no se como > hacerlo, si alguien pudiera darme un norte, > saludos D.Frias > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes -- <--Linux... Because I'm Free--> Marco Antonio Islas Cruz "Markuz" Linux User #280229 markuz@islascruz.org markuz@unixmexico.org markuz@linuxpozarica.com marco.islas@gmail.com islacruz@yahoo.com http://www.islascruz.org http://sourceforge.net/projects/gpkg/ http://www.linuxpozarica.com ------------ próxima parte ------------ Se ha borrado un mensaje que no está en formato texto plano... Nombre : no disponible Tipo : application/pgp-signature Tamaño : 189 bytes Descripción: This is a digitally signed message part Url : /archivos/python-es/attachments/20071104/78b013dd/attachment.pgp From bameda en gmail.com Sun Nov 4 18:28:39 2007 From: bameda en gmail.com (bameda) Date: Sun Nov 4 18:28:46 2007 Subject: [Python-es] Problema... necesito ayuda In-Reply-To: <1194188858.6053.12.camel@cucusa.islascruz.org> References: <366fefdb0711040004s610747f3g5ce74e27207c08fb@mail.gmail.com> <1194188858.6053.12.camel@cucusa.islascruz.org> Message-ID: Hola Dairon, No me queda muy clara tu pregunta, pero yo haria lo siguiente: 1. abriría el archivo para leerlo. 2. haría un readLines() para guardar el fichero en una Lista. 3. añado las lineas que quiero añadir al fichero en el sitio que me plazca en la Lista. 4. reescribo el fichero con la LIsta. Hay formas más elegantes, pero es lo primero que se me ocurre. SALUDOS El 4/11/07, Marco Antonio Islas Cruz escribió: > En la documentacion de python encontraras como crear modulos y paquetes. > > On Sun, 2007-11-04 at 08:04 +0100, Dairon Pérez Frías wrote: > > Hola Comunidad de Python-es, > > estoy realizando un pequenno proyectico en el cual necesito guardar datos > > entrados por el usuario en un fichero que ya contiene otros datos, es decir > > para explicarlo de una forma mas cencilla, > > quiero guardar unas cuantas clases en un solo fichero y crear algo asi como > > una libreria, .dll algo parecido pero para uzarlo en linux, pero no se como > > hacerlo, si alguien pudiera darme un norte, > > saludos D.Frias > > _______________________________________________ > > Lista de correo Python-es > > http://listas.aditel.org/listinfo/python-es > > FAQ: http://listas.aditel.org/faqpyes > -- > <--Linux... Because I'm Free--> > Marco Antonio Islas Cruz > "Markuz" > Linux User #280229 > markuz@islascruz.org > markuz@unixmexico.org > markuz@linuxpozarica.com > marco.islas@gmail.com > islacruz@yahoo.com > http://www.islascruz.org > http://sourceforge.net/projects/gpkg/ > http://www.linuxpozarica.com > > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes > > -- ____________________________________________ | | David Barragán Merino | E-mail: bameda@ARROBA@gmail.com | Ingeniería Informática | Universidad Carlos III Madrid |____________________________________________ From markuz en islascruz.org Sun Nov 4 18:37:36 2007 From: markuz en islascruz.org (Marco Antonio Islas Cruz) Date: Sun Nov 4 18:44:20 2007 Subject: [Python-es] Problema... necesito ayuda In-Reply-To: References: <366fefdb0711040004s610747f3g5ce74e27207c08fb@mail.gmail.com> <1194188858.6053.12.camel@cucusa.islascruz.org> Message-ID: <1194197856.6053.20.camel@cucusa.islascruz.org> En realidad pregunta sobre como guardar varias clases en un solo archivo, algo que se le conoce como modulos. http://docs.python.org/tut/node8.html Dairon, lee esa parte, si de plano no le entiendes al ingles google te puede ayudar a buscarlo en espaniol. On Sun, 2007-11-04 at 18:28 +0100, bameda wrote: > Hola Dairon, > > No me queda muy clara tu pregunta, pero yo haria lo siguiente: > > 1. abriría el archivo para leerlo. > 2. haría un readLines() para guardar el fichero en una Lista. > 3. añado las lineas que quiero añadir al fichero en el sitio que me > plazca en la Lista. > 4. reescribo el fichero con la LIsta. > > Hay formas más elegantes, pero es lo primero que se me ocurre. > > SALUDOS > > El 4/11/07, Marco Antonio Islas Cruz escribió: > > En la documentacion de python encontraras como crear modulos y paquetes. > > > > On Sun, 2007-11-04 at 08:04 +0100, Dairon Pérez Frías wrote: > > > Hola Comunidad de Python-es, > > > estoy realizando un pequenno proyectico en el cual necesito guardar datos > > > entrados por el usuario en un fichero que ya contiene otros datos, es decir > > > para explicarlo de una forma mas cencilla, > > > quiero guardar unas cuantas clases en un solo fichero y crear algo asi como > > > una libreria, .dll algo parecido pero para uzarlo en linux, pero no se como > > > hacerlo, si alguien pudiera darme un norte, > > > saludos D.Frias > > > _______________________________________________ > > > Lista de correo Python-es > > > http://listas.aditel.org/listinfo/python-es > > > FAQ: http://listas.aditel.org/faqpyes > > -- > > <--Linux... Because I'm Free--> > > Marco Antonio Islas Cruz > > "Markuz" > > Linux User #280229 > > markuz@islascruz.org > > markuz@unixmexico.org > > markuz@linuxpozarica.com > > marco.islas@gmail.com > > islacruz@yahoo.com > > http://www.islascruz.org > > http://sourceforge.net/projects/gpkg/ > > http://www.linuxpozarica.com > > > > _______________________________________________ > > Lista de correo Python-es > > http://listas.aditel.org/listinfo/python-es > > FAQ: http://listas.aditel.org/faqpyes > > > > > > > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes -- <--Linux... Because I'm Free--> Marco Antonio Islas Cruz "Markuz" Linux User #280229 markuz@islascruz.org markuz@unixmexico.org markuz@linuxpozarica.com marco.islas@gmail.com islacruz@yahoo.com http://www.islascruz.org http://sourceforge.net/projects/gpkg/ http://www.linuxpozarica.com ------------ próxima parte ------------ Se ha borrado un mensaje que no está en formato texto plano... Nombre : no disponible Tipo : application/pgp-signature Tamaño : 189 bytes Descripción: This is a digitally signed message part Url : /archivos/python-es/attachments/20071104/bec4722e/attachment-0001.pgp From py en ch3m4.org Mon Nov 5 04:02:03 2007 From: py en ch3m4.org (Chema Cortes) Date: Mon Nov 5 04:09:08 2007 Subject: [Python-es] hola, tengo un problema con pyDev In-Reply-To: References: <2c9fb0dd0711012038l50de186fhdb166f17377ea2a7@mail.gmail.com> Message-ID: <200711050402.06672.py@ch3m4.org> El Saturday 03 November 2007 22:19:15 acido || cuatroxl.org escribió: > Hola y gracias por responder. > haciendo caso a Chema, he ejecutado ese code y me devuelve esto: Bueno, no me has hecho del todo caso. Te decía de importar re desde una cónsola, no desde eclipse, para así descartar fallos de configuración del jython. > ['C:\\Documents and > Settings\\acido69\\workspace\\eclipse\\caracteres\\src', > 'C:\\jython2.2.1\\Lib', 'C:\\Documents and > Settings\\acido69\\workspace\\eclipse\\caracteres\\src', 'C:\\Archivos de > programa\\eclipse\\plugins\\org.python.pydev_1.3.9\\PySrc', 'C:\\Archivos > de programa\\eclipse\\__classpath__', 'C:\\jython2.2.1', 'C:\\Archivos de > programa\\Java\\jre1.6.0_03\\lib\\resources.jar', 'C:\\Archivos de > programa\\Java\\jre1.6.0_03\\lib\\rt.jar', 'C:\\Archivos de > programa\\Java\\jre1.6.0_03\\lib\\jsse.jar', 'C:\\Archivos de > programa\\Java\\jre1.6.0_03\\lib\\jce.jar', 'C:\\Archivos de > programa\\Java\\jre1.6.0_03\\lib\\ext\\dnsns.jar', 'C:\\Archivos de > programa\\Java\\jre1.6.0_03\\lib\\ext\\sunjce_provider.jar', 'C:\\Archivos > de programa\\Java\\jre1.6.0_03\\lib\\ext\\sunmscapi.jar', 'C:\\Archivos de > programa\\Java\\jre1.6.0_03\\lib\\ext\\sunpkcs11.jar', '__classpath__'] > 2.2.1 > java1.6.0_03 > jython.jar > > Me podrías decir porfavor donde se supone que tiene que estar el "re.py > "?????? El re.py lo tienes que tener en la instalación de jython (c:/jython2.2.1/Lib/re.py). La configuración está casi correcta. Aparte de que sobra tener la ruta al pydev/PySrc, incluso el __classpath__ si no vas a usar directamente clases de java, pydev requiere que la instalación de eclipse esté en una ruta sin espacios (por ejemplo en C:/eclipse). Lo raro es que no te haya dado error al configurar jython en pydev. Mueve el directorio del eclipse a un nuevo lugar (sin espacios) y vuelve a configurar pydev. From damufo en gmail.com Mon Nov 5 07:53:47 2007 From: damufo en gmail.com (damufo) Date: Mon Nov 5 07:53:57 2007 Subject: [Python-es] Problemas con 2 Combobox In-Reply-To: References: Message-ID: <472EBDFB.3050804@gmail.com> Me da la impresión de que en la base de datos tienes algún campo con algún caracter que no le gusta. Prueba a vaciar (o usar otra tabla con los mismos campos) y creas un solo registro con caracteres sin comunes. Manuel Enrique González Ramírez escribiu: > Esta es mi situacion: > Tengo un formulario en VisualWx que posee varios campos (textos, fechas,etc) > y entre ellos tengo 2 ComboBox que > toman sus datos de una consulta MySQL. Hasta hace poco no sabia como > llenarlos con la consulta, gracias a este foro > ya se como. > > Ahora mi problema es: copio el codigo en el segundo Combo (ambos con el > evento EVT_LEFT_MOUSE de VisualWx), lo > ejecuto, hago clic en el primer combo y todo va super, pero cuando hago clic > en el segundo combo me aparace el siguiente error > > Traceback (most recent last): > cursor.execute('SELECT id,ciudad FROM lugares ORDER BY ciudad ASC') > File "c:\Python25\Lib\site-packages\MySQLdb\cursors.py", line 147, in > execute > charset = db.character_set_name() > _mysql_exceptions.InterfaceError: (0,'') > > > Los combos son: > cmb_clasemov que toma los datos de la tabla movimientos (entrada, salida, > devolucion, exhibicion, ....) > cmb_origen que toma los datos de la lugares (Anserma, Pereira, > Medellin,.....) > > > ESTE ES PARTE DEL CODIGO.... > def ver_mov(self,event): #init function > #[1c1]Code event VwX...Don't modify[1c1]# > #add your code here > cursor.execute('SELECT id,ciudad FROM lugares ORDER BY ciudad asc') > > res = cursor.fetchall() > > for reg in res: > self.cmb_origen.Append(reg[1]) > > db.commit() > db.close() > event.Skip() > > return #end function > > def muestra_mov(self,event): #init function > #[54f]Code event VwX...Don't modify[54f]# > #add your code here > cursor.execute('SELECT id,clasemov FROM movimientos ORDER BY > clasemov asc') > > resultado = cursor.fetchall() > > for registro in resultado: > self.cmb_clasemov.Append(registro[1]) > > db.commit() > db.close() > event.Skip() > > return #end function > > Traceback (most recent last): > cursor.execute('SELECT id,ciudad FROM lugares ORDER BY ciudad ASC') > File "c:\Python25\Lib\site-packages\MySQLdb\cursors.py", line 147, in > execute > charset = db.character_set_name() > _mysql_exceptions.InterfaceError: (0,'') > > > A todos muchas gracias por la ayuda que me puedan prestar > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes > From dgarofalo en estudiantes.uci.cu Mon Nov 5 09:25:46 2007 From: dgarofalo en estudiantes.uci.cu (Daniel Garofalo Hernandez) Date: Mon Nov 5 09:28:07 2007 Subject: [Python-es] hola References: <2c9fb0dd0711012038l50de186fhdb166f17377ea2a7@mail.gmail.com> Message-ID: <2E22600791B02E42A475C3BBE6323105050825BC@ucixs56.uci.cu> Hola: Me gustaria saber si existe algun tipo de python portable, cosa que en maquinas no no tengas permiso de administracion de windows pueda trabajar con el. From ataulfo en gmail.com Mon Nov 5 09:53:01 2007 From: ataulfo en gmail.com (Daniel Vidal de la Rubia) Date: Mon Nov 5 09:53:09 2007 Subject: [Python-es] Problema... necesito ayuda In-Reply-To: <1194197856.6053.20.camel@cucusa.islascruz.org> References: <366fefdb0711040004s610747f3g5ce74e27207c08fb@mail.gmail.com> <1194188858.6053.12.camel@cucusa.islascruz.org> <1194197856.6053.20.camel@cucusa.islascruz.org> Message-ID: <564e19f0711050053q734f4cdesf2aa87c0ba80c760@mail.gmail.com> El 4/11/07, Marco Antonio Islas Cruz escribió: > http://docs.python.org/tut/node8.html > > Dairon, lee esa parte, si de plano no le entiendes al ingles google te > puede ayudar a buscarlo en espaniol. En http://pyspanishdoc.sourceforge.net/ tienes la documentación de Python en castellano. El capítulo que mencionas lo encuentras en: http://pyspanishdoc.sourceforge.net/tut/node8.html -- "Into glory ride. Death to the false Metal" ¡Mirad tengo un blog! ¡Ya puedo molar! >>> http://vidimensional.wordpress.com/ From damufo en gmail.com Mon Nov 5 12:19:05 2007 From: damufo en gmail.com (damufo) Date: Mon Nov 5 12:19:15 2007 Subject: [Python-es] hola In-Reply-To: <2E22600791B02E42A475C3BBE6323105050825BC@ucixs56.uci.cu> References: <2c9fb0dd0711012038l50de186fhdb166f17377ea2a7@mail.gmail.com> <2E22600791B02E42A475C3BBE6323105050825BC@ucixs56.uci.cu> Message-ID: <472EFC29.3040201@gmail.com> Hola: Si pones en google portable python sale de primero Está aquí http://www.portablepython.com/site/download/ damufo Daniel Garofalo Hernandez escribiu: > Hola: > Me gustaria saber si existe algun tipo de python portable, cosa que en maquinas no no tengas permiso de administracion de windows pueda trabajar con el. > > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes > From dmlistapython en gmail.com Mon Nov 5 12:40:07 2007 From: dmlistapython en gmail.com (Daniel) Date: Mon Nov 5 12:41:25 2007 Subject: [Python-es] wxPython y Boa Message-ID: <1194262807.4063.0.camel@pcdaniel.cdi> Hola: Quiero probar Boa Constructor y no lo puedo hacer andar, me da problemas al importar wx, teoricamente instalé wxpython pero no se como comprobar si está instalado o no. ¿alguien me tiende una mano? Saludos y gracias. Daniel From hfoffani en gmail.com Mon Nov 5 12:51:45 2007 From: hfoffani en gmail.com (Hernan M Foffani) Date: Mon Nov 5 12:51:51 2007 Subject: [Python-es] content-type de los resumenes de la lista. Message-ID: <11fab4bc0711050351x48323222t406650fd0fda0b75@mail.gmail.com> Hola, Estoy suscripto a los resúmenes de la lista y veo que muchos de los mensajes incluidos llegan mal descodificados. Deduzco que el problema podría ser que muchos suscriptores envían sus aportes en utf-8 y Mailman reenvía los resúmenes, concatenando los mensajes, en iso-8859-1. ¿Es correcto mi diagnóstico? ¿Hay algo que se pueda hacer al respecto? -Hernán. PD: Envío el mensaje a la lista y no a los administradores mas que por incordiar, por ver si algun otro colistero se le ocurre alguna idea. From listas en soft-com.es Mon Nov 5 13:19:03 2007 From: listas en soft-com.es (=?ISO-8859-1?Q?Oswaldo_Hern=E1ndez?=) Date: Mon Nov 5 13:19:32 2007 Subject: [Python-es] La paradoja Python In-Reply-To: <786142880711031334q71e14504v6fe745ce66165041@mail.gmail.com> References: <786142880711031334q71e14504v6fe745ce66165041@mail.gmail.com> Message-ID: <472F0A37.7000704@soft-com.es> Robert C. escribió: > Hola lista, > quizás os interese: > http://mundogeek.net/archivos/2007/10/23/la-paradoja-python/ > Aqui esta el articulo completo traducido: http://www.fduran.com/wordpress/?p=23 El primer párrafo no tiene desperdicio ;) Saludos, -- ***************************************** Oswaldo Hernández oswaldo (@) soft-com (.) es ***************************************** From jim2k7 en gmail.com Mon Nov 5 13:28:08 2007 From: jim2k7 en gmail.com (Jaime Ibar) Date: Mon Nov 5 13:28:14 2007 Subject: [Python-es] wxPython y Boa In-Reply-To: <1194262807.4063.0.camel@pcdaniel.cdi> References: <1194262807.4063.0.camel@pcdaniel.cdi> Message-ID: Hola, simplemente desde un shell de Python haces: import wx Si no te da ningún error es que lo tienes instalado Si te da un ImportError: No module named wx es que no lo tienes instalado o que el directorio donde está instalado no está en el PYTHONPATH y por lo tanto no encuentra ese módulo. salu2 El día 5/11/07, Daniel escribió: > > Hola: > Quiero probar Boa Constructor y no lo puedo hacer andar, me da > problemas al importar wx, teoricamente instalé wxpython pero no se como > comprobar si está instalado o no. ¿alguien me tiende una mano? > Saludos y gracias. Daniel > > > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes > From antonio.beamud en linkend.net Mon Nov 5 13:58:35 2007 From: antonio.beamud en linkend.net (Antonio Beamud Montero) Date: Mon Nov 5 13:58:41 2007 Subject: [Python-es] hola In-Reply-To: <2E22600791B02E42A475C3BBE6323105050825BC@ucixs56.uci.cu> References: <2c9fb0dd0711012038l50de186fhdb166f17377ea2a7@mail.gmail.com> <2E22600791B02E42A475C3BBE6323105050825BC@ucixs56.uci.cu> Message-ID: <1194267515.6641.34.camel@lujuria.linkend.net> El lun, 05-11-2007 a las 03:25 -0500, Daniel Garofalo Hernandez escribió: > Hola: > Me gustaria saber si existe algun tipo de python portable, cosa que en maquinas no no tengas permiso de administracion de windows pueda trabajar con el. Además de consultar primero en google, por favor, en el asunto indica el tema del mensaje, ya que "hola", no es muy descriptivo que digamos. Un saludo. > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes From markuz en islascruz.org Mon Nov 5 16:13:01 2007 From: markuz en islascruz.org (Marco Antonio Islas Cruz) Date: Mon Nov 5 16:13:48 2007 Subject: [Python-es] hola In-Reply-To: <2E22600791B02E42A475C3BBE6323105050825BC@ucixs56.uci.cu> References: <2c9fb0dd0711012038l50de186fhdb166f17377ea2a7@mail.gmail.com> <2E22600791B02E42A475C3BBE6323105050825BC@ucixs56.uci.cu> Message-ID: <1194275581.6055.7.camel@cucusa.islascruz.org> No entiendo bien tu pregunta, pero supongo que buscas una version de python que no tengas que instalar en la maquina, es decir, que un simple usuario limitado en windows pueda correrlo. es cierto?. On Mon, 2007-11-05 at 03:25 -0500, Daniel Garofalo Hernandez wrote: > Hola: > Me gustaria saber si existe algun tipo de python portable, cosa que en maquinas no no tengas permiso de administracion de windows pueda trabajar con el. > > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes -- <--Linux... Because I'm Free--> Marco Antonio Islas Cruz "Markuz" Linux User #280229 markuz@islascruz.org markuz@unixmexico.org markuz@linuxpozarica.com marco.islas@gmail.com islacruz@yahoo.com http://www.islascruz.org http://sourceforge.net/projects/gpkg/ http://www.linuxpozarica.com ------------ próxima parte ------------ Se ha borrado un mensaje que no está en formato texto plano... Nombre : no disponible Tipo : application/pgp-signature Tamaño : 189 bytes Descripción: This is a digitally signed message part Url : /archivos/python-es/attachments/20071105/8020f40b/attachment.pgp From markuz en islascruz.org Mon Nov 5 16:16:22 2007 From: markuz en islascruz.org (Marco Antonio Islas Cruz) Date: Mon Nov 5 17:17:29 2007 Subject: [Python-es] hola In-Reply-To: <1194267515.6641.34.camel@lujuria.linkend.net> References: <2c9fb0dd0711012038l50de186fhdb166f17377ea2a7@mail.gmail.com> <2E22600791B02E42A475C3BBE6323105050825BC@ucixs56.uci.cu> <1194267515.6641.34.camel@lujuria.linkend.net> Message-ID: <1194275782.6055.9.camel@cucusa.islascruz.org> Completamente de acuerdo con Antonio, por el amor de mike, pongan un subject descriptivo! On Mon, 2007-11-05 at 13:58 +0100, Antonio Beamud Montero wrote: > El lun, 05-11-2007 a las 03:25 -0500, Daniel Garofalo Hernandez > escribió: > > Hola: > > Me gustaria saber si existe algun tipo de python portable, cosa que en maquinas no no tengas permiso de administracion de windows pueda trabajar con el. > > Además de consultar primero en google, por favor, en el asunto indica el > tema del mensaje, ya que "hola", no es muy descriptivo que digamos. > > Un saludo. > > > _______________________________________________ > > Lista de correo Python-es > > http://listas.aditel.org/listinfo/python-es > > FAQ: http://listas.aditel.org/faqpyes > > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes -- <--Linux... Because I'm Free--> Marco Antonio Islas Cruz "Markuz" Linux User #280229 markuz@islascruz.org markuz@unixmexico.org markuz@linuxpozarica.com marco.islas@gmail.com islacruz@yahoo.com http://www.islascruz.org http://sourceforge.net/projects/gpkg/ http://www.linuxpozarica.com ------------ próxima parte ------------ Se ha borrado un mensaje que no está en formato texto plano... Nombre : no disponible Tipo : application/pgp-signature Tamaño : 189 bytes Descripción: This is a digitally signed message part Url : /archivos/python-es/attachments/20071105/843507c8/attachment.pgp From migsblues1 en hotmail.com Mon Nov 5 17:23:02 2007 From: migsblues1 en hotmail.com (=?iso-8859-1?Q?Marcelo_Gudi=F1o?=) Date: Mon Nov 5 17:24:04 2007 Subject: [Python-es] Problema con lista In-Reply-To: <1194275782.6055.9.camel@cucusa.islascruz.org> References: <2c9fb0dd0711012038l50de186fhdb166f17377ea2a7@mail.gmail.com> <2E22600791B02E42A475C3BBE6323105050825BC@ucixs56.uci.cu> <1194267515.6641.34.camel@lujuria.linkend.net> <1194275782.6055.9.camel@cucusa.islascruz.org> Message-ID: No llegan los mensajes para cambiar la clave ni para desuscribirse!!!!!! La lista de correo envia diariamente decenas de correo que se hacen muy molestos. POr favos ayuda. > Subject: RE: [Python-es] hola > From: markuz@islascruz.org > To: python-es@aditel.org > Date: Mon, 5 Nov 2007 09:16:22 -0600 > > Completamente de acuerdo con Antonio, por el amor de mike, pongan un > subject descriptivo! > On Mon, 2007-11-05 at 13:58 +0100, Antonio Beamud Montero wrote: > > El lun, 05-11-2007 a las 03:25 -0500, Daniel Garofalo Hernandez > > escribió: > > > Hola: > > > Me gustaria saber si existe algun tipo de python portable, cosa que en maquinas no no tengas permiso de administracion de windows pueda trabajar con el. > > > > Además de consultar primero en google, por favor, en el asunto indica el > > tema del mensaje, ya que "hola", no es muy descriptivo que digamos. > > > > Un saludo. > > > > > _______________________________________________ > > > Lista de correo Python-es > > > http://listas.aditel.org/listinfo/python-es > > > FAQ: http://listas.aditel.org/faqpyes > > > > _______________________________________________ > > Lista de correo Python-es > > http://listas.aditel.org/listinfo/python-es > > FAQ: http://listas.aditel.org/faqpyes > -- > <--Linux... Because I'm Free--> > Marco Antonio Islas Cruz > "Markuz" > Linux User #280229 > markuz@islascruz.org > markuz@unixmexico.org > markuz@linuxpozarica.com > marco.islas@gmail.com > islacruz@yahoo.com > http://www.islascruz.org > http://sourceforge.net/projects/gpkg/ > http://www.linuxpozarica.com _________________________________________________________________ Explore the seven wonders of the world http://search.msn.com/results.aspx?q=7+wonders+world&mkt=en-US&form=QBRE From minibota en gmail.com Mon Nov 5 17:38:35 2007 From: minibota en gmail.com (=?ISO-8859-1?Q?Pavel_Mu=F1oz?=) Date: Mon Nov 5 17:45:32 2007 Subject: [Python-es] Iniciar cherrypy al bootear Message-ID: <118999020711050838k1138364uf0f79efd4d202f10@mail.gmail.com> Buenos dias. Tengo desarrollada una aplicación utilizando CherryPy 3. Actualmente corre debajo de Apache utilizando mod_python; hasta ahí todo bien, pero tengo un problemita... no he podido hacer que la aplicación ejecute automaticamente al iniciar el sistema operativo. Tengo ubuntu 7.04 y la aplicación la tengo en una carpeta /xxx/yyy Tengo un pequeño script en /etc/init.d/ q ejecuta la aplicación, sin embargo, el problema parece ser que al llamar al programa desde fuera de la carpeta /xxx/yyy hay un problema con los paths y no encuentra algunos archivos de configuración, por lo que el programa se detiene. Saludos From alberto en toscat.net Mon Nov 5 18:05:31 2007 From: alberto en toscat.net (Alberto Valverde) Date: Mon Nov 5 18:34:22 2007 Subject: [Python-es] Iniciar cherrypy al bootear In-Reply-To: <118999020711050838k1138364uf0f79efd4d202f10@mail.gmail.com> References: <118999020711050838k1138364uf0f79efd4d202f10@mail.gmail.com> Message-ID: <472F4D5B.50903@toscat.net> Pavel Muñoz wrote: > Buenos dias. > > Tengo desarrollada una aplicación utilizando CherryPy 3. > Actualmente corre debajo de Apache utilizando mod_python; hasta ahí todo > bien, pero tengo un problemita... no he podido hacer que la aplicación > ejecute automaticamente al iniciar el sistema operativo. > > Tengo ubuntu 7.04 y la aplicación la tengo en una carpeta /xxx/yyy > Tengo un pequeño script en /etc/init.d/ q ejecuta la aplicación, sin > embargo, el problema parece ser que al llamar al programa desde fuera de la > carpeta /xxx/yyy hay un problema con los paths y no encuentra algunos > archivos de configuración, por lo que el programa se detiene. Los paths los debes hacer absolutos si quieres hacerlo "bien". Puedes calcularlos a partir de un módulo con __file__ o con pkg_resources.resource_filename si usas setuptools. Como solución chapucera también puedes envolver la aplicación en un script de shell que cambie de directorio y desde ahí ejecutar con "exec" tu aplicacición. Reitero lo de "chapucero"... los demonios deben ejecutarse siempre desde "/". Alberto From sinnerencia en gmail.com Mon Nov 5 18:34:14 2007 From: sinnerencia en gmail.com (Alex Sancho) Date: Mon Nov 5 18:34:24 2007 Subject: [Python-es] Iniciar cherrypy al bootear In-Reply-To: <118999020711050838k1138364uf0f79efd4d202f10@mail.gmail.com> References: <118999020711050838k1138364uf0f79efd4d202f10@mail.gmail.com> Message-ID: Si no me equivoco, se pueden hacer enlaces simbólicos que contengan los archivos que deseas, quizás es una solución un poco sucia, pero en algún caso me ha ido de perlas. El comando es "ls -s" Espero que te ayude Saludos 2007/11/5, Pavel Muñoz : > > Buenos dias. > > Tengo desarrollada una aplicación utilizando CherryPy 3. > Actualmente corre debajo de Apache utilizando mod_python; hasta ahí todo > bien, pero tengo un problemita... no he podido hacer que la aplicación > ejecute automaticamente al iniciar el sistema operativo. > > Tengo ubuntu 7.04 y la aplicación la tengo en una carpeta /xxx/yyy > Tengo un pequeño script en /etc/init.d/ q ejecuta la aplicación, sin > embargo, el problema parece ser que al llamar al programa desde fuera de > la > carpeta /xxx/yyy hay un problema con los paths y no encuentra algunos > archivos de configuración, por lo que el programa se detiene. > > Saludos > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes > -- Alex Sancho From alberto en toscat.net Mon Nov 5 18:48:32 2007 From: alberto en toscat.net (Alberto Valverde) Date: Mon Nov 5 18:49:10 2007 Subject: [Python-es] Iniciar cherrypy al bootear In-Reply-To: <472F4D5B.50903@toscat.net> References: <118999020711050838k1138364uf0f79efd4d202f10@mail.gmail.com> <472F4D5B.50903@toscat.net> Message-ID: <472F5770.4050309@toscat.net> Alberto Valverde wrote: > Pavel Muñoz wrote: >> Buenos dias. >> >> Tengo desarrollada una aplicación utilizando CherryPy 3. >> Actualmente corre debajo de Apache utilizando mod_python; hasta ahí todo >> bien, pero tengo un problemita... no he podido hacer que la aplicación >> ejecute automaticamente al iniciar el sistema operativo. >> >> Tengo ubuntu 7.04 y la aplicación la tengo en una carpeta /xxx/yyy >> Tengo un pequeño script en /etc/init.d/ q ejecuta la aplicación, sin >> embargo, el problema parece ser que al llamar al programa desde fuera de la >> carpeta /xxx/yyy hay un problema con los paths y no encuentra algunos >> archivos de configuración, por lo que el programa se detiene. > > > Como solución chapucera también puedes envolver la aplicación en un > script de shell que cambie de directorio y desde ahí ejecutar con "exec" > tu aplicacición. Reitero lo de "chapucero"... los demonios deben > ejecutarse siempre desde "/". > Oops, olvida ésto último. No había caído en lo de mod_python... Apache ya corre desde "/" y no creo que lo puedas cambiar de directorio. Te paso una receta para encontrar el path absoluto. Si tu tu aplicacion la tienes distribuida así: paquete paquete/__init__.py paquete/config.ini Y quieres la ruta absoluta a config.ini pon en __init__.py import os here_dir = os.path.dirname(os.path.abspath(__file__)) config_path = os.path.join(here_dir, 'config.ini') Alberto From peonblanco83 en gmail.com Mon Nov 5 20:08:50 2007 From: peonblanco83 en gmail.com (Peon Blanco) Date: Mon Nov 5 20:08:57 2007 Subject: [Python-es] python, glade,postgresql TEXTVIEW Message-ID: Hola espero y me puedan ayudar com mi problema no puedo mostrar el resultado de un con = """select * from ...;""" res = conn.query(con) en un textview lo tengo haci self.resul = self.textviewresultado.get_buffer() self.resul.set_text(res) tambien lo e echo asi self.resul.insert_at_cursor(res) ya e leido el manual de pygtk y la verdad no e entendido como solucionarlo tal vez sea la propiedad que esta mal bueno espero y me puedad ayudar From dmlistapython en gmail.com Mon Nov 5 20:17:03 2007 From: dmlistapython en gmail.com (Daniel) Date: Mon Nov 5 20:18:18 2007 Subject: [Python-es] wxPython y Boa In-Reply-To: References: <1194262807.4063.0.camel@pcdaniel.cdi> Message-ID: <1194290223.4135.1.camel@pcdaniel.cdi> Me dá "ImportError: No module named wx " evidentemente no tengo wxPython instalado. Pero no se como instalarlo, bajé de la wxPython.org todos los RPM y cuando intento instalarlo me da problemas de dependencias. Tengo SUSE 10.2, ¿alguna idea? Gracias. El lun, 05-11-2007 a las 13:28 +0100, Jaime Ibar escribió: > Hola, simplemente desde un shell de Python haces: > > import wx > > Si no te da ningún error es que lo tienes instalado > Si te da un ImportError: No module named wx es que no lo tienes instalado o > que el directorio donde está instalado no > está en el PYTHONPATH y por lo tanto no encuentra ese módulo. > > salu2 > > El día 5/11/07, Daniel escribió: > > > > Hola: > > Quiero probar Boa Constructor y no lo puedo hacer andar, me da > > problemas al importar wx, teoricamente instalé wxpython pero no se como > > comprobar si está instalado o no. ¿alguien me tiende una mano? > > Saludos y gracias. Daniel > > > > > > _______________________________________________ > > Lista de correo Python-es > > http://listas.aditel.org/listinfo/python-es > > FAQ: http://listas.aditel.org/faqpyes > > > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes From maengora en gmail.com Mon Nov 5 20:19:47 2007 From: maengora en gmail.com (=?ISO-8859-1?Q?Manuel_Enrique_Gonz=E1lez_Ram=EDrez?=) Date: Mon Nov 5 20:19:55 2007 Subject: [Python-es] Se repite la consulta MySQL In-Reply-To: <000b01c81ec6$c1f18d10$0201a8c0@portatil> References: <000b01c81ec6$c1f18d10$0201a8c0@portatil> Message-ID: Javi, muchas gracias a veces me da hasta pena ver que las soluciones son de lo mas sencillo, pero bueno, de eso se trata... de aprender. Muchas gracias a todos, solo basto con agregar self.cmb_origen .Clear() antes del bucle y ahora todo marcha de maravilla. Gracias nuevamente a todos los que colaboraron. El día 4/11/07, Javi escribió: > > Bajo mi punto de vista lo unico que debes hacer es borrar los datos del > combo antes de cargarlo. Simplemente pon la linea > > self.cmb_origen .Clear() > > antes del bulce for, te quedaria algo asi > > res = cursor.fetchall() > > self.cmb_origen.Clear() > > for reg in res: > self.cmb_origen.Append(reg[0]) > > db.commit() > db.close() > return #end function > > > > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes > From peonblanco83 en gmail.com Mon Nov 5 20:20:27 2007 From: peonblanco83 en gmail.com (Peon Blanco) Date: Mon Nov 5 20:20:33 2007 Subject: [Python-es] python,glade,postgresql TREEVIEW Message-ID: Hola lista espero y me puedan ayudar no puedo mostrar una consulta en un textview el codigo es algo asi import pg conn = (base,usuario) con = """select * from base;""" res=conn.query(con) self.resultado = self.resultado.get_buffer self.resultado.set_text(res) tambien lo e echo asi self.resultado.insert_at_cursor(res) no se si este mal la propiedad del textview bueno espero y me puedan ayudar From markuz en islascruz.org Mon Nov 5 20:26:23 2007 From: markuz en islascruz.org (Marco Antonio Islas Cruz) Date: Mon Nov 5 20:26:12 2007 Subject: [Python-es] Iniciar cherrypy al bootear In-Reply-To: <118999020711050838k1138364uf0f79efd4d202f10@mail.gmail.com> References: <118999020711050838k1138364uf0f79efd4d202f10@mail.gmail.com> Message-ID: <1194290784.6055.16.camel@cucusa.islascruz.org> import sys sys.path.insert(0,'path donde reside tu script') On Mon, 2007-11-05 at 10:38 -0600, Pavel Muñoz wrote: > Buenos dias. > > Tengo desarrollada una aplicación utilizando CherryPy 3. > Actualmente corre debajo de Apache utilizando mod_python; hasta ahí todo > bien, pero tengo un problemita... no he podido hacer que la aplicación > ejecute automaticamente al iniciar el sistema operativo. > > Tengo ubuntu 7.04 y la aplicación la tengo en una carpeta /xxx/yyy > Tengo un pequeño script en /etc/init.d/ q ejecuta la aplicación, sin > embargo, el problema parece ser que al llamar al programa desde fuera de la > carpeta /xxx/yyy hay un problema con los paths y no encuentra algunos > archivos de configuración, por lo que el programa se detiene. > > Saludos > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes -- <--Linux... Because I'm Free--> Marco Antonio Islas Cruz "Markuz" Linux User #280229 markuz@islascruz.org markuz@unixmexico.org markuz@linuxpozarica.com marco.islas@gmail.com islacruz@yahoo.com http://www.islascruz.org http://sourceforge.net/projects/gpkg/ http://www.linuxpozarica.com ------------ próxima parte ------------ Se ha borrado un mensaje que no está en formato texto plano... Nombre : no disponible Tipo : application/pgp-signature Tamaño : 189 bytes Descripción: This is a digitally signed message part Url : /archivos/python-es/attachments/20071105/30dd3f70/attachment-0001.pgp From a.porrua en gmail.com Mon Nov 5 20:28:12 2007 From: a.porrua en gmail.com (tny) Date: Mon Nov 5 20:28:02 2007 Subject: [Python-es] Iniciar cherrypy al bootear In-Reply-To: References: <118999020711050838k1138364uf0f79efd4d202f10@mail.gmail.com> Message-ID: <1194290892.9350.1.camel@skynet> El lun, 05-11-2007 a las 18:34 +0100, Alex Sancho escribió: > Si no me equivoco, se pueden hacer enlaces simbólicos que contengan los > archivos que deseas, quizás es una solución un poco sucia, pero en algún > caso me ha ido de perlas. > El comando es "ls -s" Fe de Errata. ln -s > Espero que te ayude > > > Saludos > > 2007/11/5, Pavel Muñoz : > > > > Buenos dias. > > > > Tengo desarrollada una aplicación utilizando CherryPy 3. > > Actualmente corre debajo de Apache utilizando mod_python; hasta ahí todo > > bien, pero tengo un problemita... no he podido hacer que la aplicación > > ejecute automaticamente al iniciar el sistema operativo. > > > > Tengo ubuntu 7.04 y la aplicación la tengo en una carpeta /xxx/yyy > > Tengo un pequeño script en /etc/init.d/ q ejecuta la aplicación, sin > > embargo, el problema parece ser que al llamar al programa desde fuera de > > la > > carpeta /xxx/yyy hay un problema con los paths y no encuentra algunos > > archivos de configuración, por lo que el programa se detiene. > > > > Saludos > > _______________________________________________ > > Lista de correo Python-es > > http://listas.aditel.org/listinfo/python-es > > FAQ: http://listas.aditel.org/faqpyes > > > > > From dgarofalo en estudiantes.uci.cu Mon Nov 5 20:53:25 2007 From: dgarofalo en estudiantes.uci.cu (Daniel Garofalo Hernandez) Date: Mon Nov 5 20:56:12 2007 Subject: [Python-es] sobre python portable References: <2c9fb0dd0711012038l50de186fhdb166f17377ea2a7@mail.gmail.com><2E22600791B02E42A475C3BBE6323105050825BC@ucixs56.uci.cu> <1194275581.6055.7.camel@cucusa.islascruz.org> Message-ID: <2E22600791B02E42A475C3BBE6323105050825BF@ucixs56.uci.cu> si eso mismo una version de python que pueda correr siendo un usuario simple pueda correr en windows, asi como un entorno de desarrollo de python que corra en el, me recomendarian?? De: python-es-bounces@aditel.org en nombre de Marco Antonio Islas Cruz Enviado el: lun 05/11/2007 10:13 Para: La lista de python en castellano Asunto: RE: [Python-es] hola No entiendo bien tu pregunta, pero supongo que buscas una version de python que no tengas que instalar en la maquina, es decir, que un simple usuario limitado en windows pueda correrlo. es cierto?. On Mon, 2007-11-05 at 03:25 -0500, Daniel Garofalo Hernandez wrote: > Hola: > Me gustaria saber si existe algun tipo de python portable, cosa que en maquinas no no tengas permiso de administracion de windows pueda trabajar con el. > > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes -- <--Linux... Because I'm Free--> Marco Antonio Islas Cruz "Markuz" Linux User #280229 markuz@islascruz.org markuz@unixmexico.org markuz@linuxpozarica.com marco.islas@gmail.com islacruz@yahoo.com http://www.islascruz.org http://sourceforge.net/projects/gpkg/ http://www.linuxpozarica.com From sinnerencia en gmail.com Mon Nov 5 21:30:19 2007 From: sinnerencia en gmail.com (Alex Sancho) Date: Mon Nov 5 21:30:26 2007 Subject: [Python-es] Iniciar cherrypy al bootear In-Reply-To: <1194290892.9350.1.camel@skynet> References: <118999020711050838k1138364uf0f79efd4d202f10@mail.gmail.com> <1194290892.9350.1.camel@skynet> Message-ID: Vaya, me he colado. Si es que trabajar con Vb no es bueno, ya lo digo yo. Gracias! 2007/11/5, tny : > > > El lun, 05-11-2007 a las 18:34 +0100, Alex Sancho escribió: > > Si no me equivoco, se pueden hacer enlaces simbólicos que contengan los > > archivos que deseas, quizás es una solución un poco sucia, pero en algún > > caso me ha ido de perlas. > > El comando es "ls -s" > > Fe de Errata. > > ln -s > > > Espero que te ayude > > > > > > Saludos > > > > 2007/11/5, Pavel Muñoz : > > > > > > Buenos dias. > > > > > > Tengo desarrollada una aplicación utilizando CherryPy 3. > > > Actualmente corre debajo de Apache utilizando mod_python; hasta ahí > todo > > > bien, pero tengo un problemita... no he podido hacer que la aplicación > > > ejecute automaticamente al iniciar el sistema operativo. > > > > > > Tengo ubuntu 7.04 y la aplicación la tengo en una carpeta /xxx/yyy > > > Tengo un pequeño script en /etc/init.d/ q ejecuta la aplicación, sin > > > embargo, el problema parece ser que al llamar al programa desde fuera > de > > > la > > > carpeta /xxx/yyy hay un problema con los paths y no encuentra algunos > > > archivos de configuración, por lo que el programa se detiene. > > > > > > Saludos > > > _______________________________________________ > > > Lista de correo Python-es > > > http://listas.aditel.org/listinfo/python-es > > > FAQ: http://listas.aditel.org/faqpyes > > > > > > > > > > > > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes > -- Alex Sancho From markuz en islascruz.org Mon Nov 5 21:51:53 2007 From: markuz en islascruz.org (Marco Antonio Islas Cruz) Date: Mon Nov 5 21:58:19 2007 Subject: [Python-es] python, glade,postgresql TEXTVIEW In-Reply-To: References: Message-ID: <1194295913.6614.5.camel@cucusa.islascruz.org> obtienes el buffer con textivew.get_buffer() y le pones un set_text a ese buffer(). Si quieres agregar el texto en lugar de sobreponer el texto entonces necesitaras usar el iter de insercion. Checate la documentacion relacionada a gtk.TextBuffer. On Mon, 2007-11-05 at 12:08 -0700, Peon Blanco wrote: > Hola espero y me puedan ayudar com mi problema > > no puedo mostrar el resultado de un > > con = """select * from ...;""" > res = conn.query(con) > > en un textview lo tengo haci > > self.resul = self.textviewresultado.get_buffer() > self.resul.set_text(res) > > tambien lo e echo asi > > self.resul.insert_at_cursor(res) > > ya e leido el manual de pygtk y la verdad no e entendido > como solucionarlo > tal vez sea la propiedad que esta mal bueno espero y me puedad ayudar > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes -- <--Linux... Because I'm Free--> Marco Antonio Islas Cruz "Markuz" Linux User #280229 markuz@islascruz.org markuz@unixmexico.org markuz@linuxpozarica.com marco.islas@gmail.com islacruz@yahoo.com http://www.islascruz.org http://sourceforge.net/projects/gpkg/ http://www.linuxpozarica.com ------------ próxima parte ------------ Se ha borrado un mensaje que no está en formato texto plano... Nombre : no disponible Tipo : application/pgp-signature Tamaño : 189 bytes Descripción: This is a digitally signed message part Url : /archivos/python-es/attachments/20071105/d37b1a94/attachment.pgp From sendero.luminoso en gmail.com Mon Nov 5 22:52:48 2007 From: sendero.luminoso en gmail.com (ivan obeso) Date: Mon Nov 5 22:53:02 2007 Subject: [Python-es] Aplicacion web Message-ID: <38f547470711051352w68f9e657g53344294a62bdf95@mail.gmail.com> Hola muchachada, ¿Que tal?. Os cuento: Estoy haciendo un proyecto en python, una aplicacion simple de escritorio, por ahora, porque la aplicacion acabara estando alojada en un servidor. De esto ultimo (programacion web), no tengo mucha idea en python, ya que solo he usado jboss y java para desplegar aplicaciones. Queria que me recomendarais alguna web, o libro, para ayudarme en este problema, y a ver si me podeis orientar un poco. Como ya os he dicho, es un proyecto mediano-grande, por lo que no querria meterme en muchos berenjenales en este asunto y que fuera de la forma mas simplificada posible. Muchas gracias. From morillas en gmail.com Mon Nov 5 23:18:13 2007 From: morillas en gmail.com (Luis Miguel Morillas) Date: Mon Nov 5 23:18:21 2007 Subject: [Python-es] Aplicacion web In-Reply-To: <38f547470711051352w68f9e657g53344294a62bdf95@mail.gmail.com> References: <38f547470711051352w68f9e657g53344294a62bdf95@mail.gmail.com> Message-ID: <68d25cbc0711051418o3d75dbbfjce81aed8992fd4d9@mail.gmail.com> cherrypy.org pylonshq.com turbogears.org -- lm El 5/11/07, ivan obeso escribió: > Hola muchachada, ¿Que tal?. Os cuento: Estoy haciendo un proyecto en > python, una aplicacion simple de escritorio, por ahora, porque la > aplicacion acabara estando alojada en un servidor. De esto ultimo > (programacion web), no tengo mucha idea en python, ya que solo he > usado jboss y java para desplegar aplicaciones. Queria que me > recomendarais alguna web, o libro, para ayudarme en este problema, y a > ver si me podeis orientar un poco. Como ya os he dicho, es un proyecto > mediano-grande, por lo que no querria meterme en muchos berenjenales > en este asunto y que fuera de la forma mas simplificada posible. > Muchas gracias. > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes > -- Saludos, -- Luis Miguel From jim2k7 en gmail.com Tue Nov 6 00:16:08 2007 From: jim2k7 en gmail.com (Jaime Ibar) Date: Tue Nov 6 00:16:14 2007 Subject: [Python-es] wxPython y Boa In-Reply-To: <1194290223.4135.1.camel@pcdaniel.cdi> References: <1194262807.4063.0.camel@pcdaniel.cdi> <1194290223.4135.1.camel@pcdaniel.cdi> Message-ID: Instálalo desde los repositorios de Suse con Yast. Yo en el trabajo tengo opensuse 10.3 y lo he instalado desde los repositorios sin ningún problema con Yast. El día 5/11/07, Daniel escribió: > > Me dá "ImportError: No module named wx " evidentemente no tengo wxPython > instalado. Pero no se como instalarlo, bajé de la wxPython.org todos los > RPM y cuando intento instalarlo me da problemas de dependencias. > Tengo SUSE 10.2, ¿alguna idea? > Gracias. > El lun, 05-11-2007 a las 13:28 +0100, Jaime Ibar escribió: > > Hola, simplemente desde un shell de Python haces: > > > > import wx > > > > Si no te da ningún error es que lo tienes instalado > > Si te da un ImportError: No module named wx es que no lo tienes > instalado o > > que el directorio donde está instalado no > > está en el PYTHONPATH y por lo tanto no encuentra ese módulo. > > > > salu2 > > > > El día 5/11/07, Daniel escribió: > > > > > > Hola: > > > Quiero probar Boa Constructor y no lo puedo hacer andar, me da > > > problemas al importar wx, teoricamente instalé wxpython pero no se > como > > > comprobar si está instalado o no. ¿alguien me tiende una mano? > > > Saludos y gracias. Daniel > > > > > > > > > _______________________________________________ > > > Lista de correo Python-es > > > http://listas.aditel.org/listinfo/python-es > > > FAQ: http://listas.aditel.org/faqpyes > > > > > _______________________________________________ > > Lista de correo Python-es > > http://listas.aditel.org/listinfo/python-es > > FAQ: http://listas.aditel.org/faqpyes > > > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes > From arnau en ehas.org Tue Nov 6 00:18:46 2007 From: arnau en ehas.org (Arnau Sanchez) Date: Tue Nov 6 00:19:07 2007 Subject: [Python-es] python,glade,postgresql TREEVIEW In-Reply-To: References: Message-ID: <472FA4D6.7060807@ehas.org> Peon Blanco escribió: > import pg > conn = (base,usuario) > > con = """select * from base;""" > res=conn.query(con) En este punto pondría un "print res" de debug, para comprobar que ha devuelto lo que esperas. > self.resultado = self.resultado.get_buffer > self.resultado.set_text(res) Será: self.resultado = self.resultado.get_buffer() En cualquier caso, esa línea no puede estar bien, machacas lo que tengas en self.resultado (¿el textview?). Parece más lógico: text_buffer = self.textview.get_buffer() text_buffer.set_text(res) Con set_text() estableces el buffer entero; si por contra quieres añadir texto: end = text_buffer.get_end_iter() text_buffer.insert(end, res) From acido69 en gmail.com Tue Nov 6 03:03:59 2007 From: acido69 en gmail.com (acido || cuatroxl.org) Date: Tue Nov 6 03:10:56 2007 Subject: [Python-es] =?utf-8?q?Mi_primer_=22programa=22_en_python=2C_me_q?= =?utf-8?q?ueda_funciones_que_no_se_muy_bien_c=C3=B3mo_solventar?= Message-ID: Hola a todos, antes de nada explico lo que hace el programita: le paso un directorio y busca todos los archivos htm(podría buscar html o algo así pero será para la próxima versión) para hacer lo siguiente: -convierte los nombres de los tags en minúsculas, si lo hay -convierte a codigo html los caracteres tipo(á, é, í, ó....); esto lo saca de un archivo configurable(config.txt) -es recursivo en todas las carpetas hijas. El código ya funciona, pero me gustaría: -que me reportara el error(en caso de haberlo) que se puede presentar a la hora de sobrescribir el archivo -me preocupa que exista archivos en utf8 y yo los guarde como ansii, como detecto que codificación tiene??????? Y bueno, más que nada me gustaría le mirareis haber que puedo mejorar, porque creo que lo de reescribir los archivos no esta mu allá -------------- config.txt -------------- á=á Á=Á é=é É=É í=í --------------------------------- replacesHTML_v003.py --------------------------------- import os,sys import string,re def reemplaza(coincidencias, f): #coincidencias=[('1', 'uno'), ('2', 'dos'), ('3', 'tres'), ('4', 'cuatro')...] for i in coincidencias: f=re.sub(i[0],i[1], f) return f def Mm(f): coincidencias1=re.findall("[\n][^<]*[>]",f) coincidencias2=re.findall("[<][^>]*[\n]",f) coincidencias3=re.findall("[<].*[>]",f) resultado=f for i in coincidencias1: busca=re.search(i,resultado) if busca: p1=busca.start() p2=busca.end() resultado1=resultado[:p1] resultado2=resultado[p2:] anadido=string.lower(f[p1:p2]) resultado=resultado1+anadido+resultado2 for i in coincidencias2: busca=re.search(i,resultado) if busca: p1=busca.start() p2=busca.end() resultado1=resultado[:p1] resultado2=resultado[p2:] anadido=string.lower(f[p1:p2]) resultado=resultado1+anadido+resultado2 for i in coincidencias3: busca=re.search(i,resultado) if busca: p1=busca.start() p2=busca.end() resultado1=resultado[:p1] resultado2=resultado[p2:] anadido=string.lower(f[p1:p2]) resultado=resultado1+anadido+resultado2 return resultado def corrige(archivo, caracterValor): flectura=open(archivo,'r') contenido=flectura.read() flectura.close() contenido=Mm(contenido) contenido=reemplaza(caracterValor, contenido) #aquí guardas el nuevo #si toddo ok devuelve true #si falla algo devuelve false y para todo fescritura=open(archivo, 'w') fescritura.write(contenido); fescritura.close #aquí siempre devuelve true, pero realmente no comprueba nada return 1 def getCaracterValor(path='config.txt'): salida=[] flectura=open(os.path.join(path),'r') for i in flectura: a = i.split('=') a[1] = a[1][0:-1] salida.append((a[0],a[1])) flectura.close return salida def getFiles(path): src = os.path.realpath(path) for i in os.listdir(path): if os.path.isfile(os.path.join(path, i)): _extension=i.split('.')[-1] if _extension == 'htm': if corrige(src+'\\'+i, getCaracterValor()): print src+'\\'+i+'------------->OK' else: print src+'\\'+i+'------------->NO' if os.path.isdir(os.path.join(path, i)): getFiles(src+'\\'+i) return 1 if __name__ == '__main__': try: if len(sys.argv) == 1: #mete solo un argumento if os.path.isdir(sys.argv[1]): #a metedio un directorio getFiles(sys.argv[1]) except: print "Uso: python",sys.argv[0], " nombre_de_directorio" sys.exit(1) From acido69 en gmail.com Tue Nov 6 03:06:02 2007 From: acido69 en gmail.com (acido || cuatroxl.org) Date: Tue Nov 6 03:13:04 2007 Subject: [Python-es] hola, tengo un problema con pyDev In-Reply-To: <200711050402.06672.py@ch3m4.org> References: <2c9fb0dd0711012038l50de186fhdb166f17377ea2a7@mail.gmail.com> <200711050402.06672.py@ch3m4.org> Message-ID: Hola, gracias por responder y leer mi duda, al final pude solventarlo, que era una tontuna muy grande, tanto que me da vergüenza decirlo :D gracias, ya he dado un pasito en python :D From gagsl-py2 en yahoo.com.ar Tue Nov 6 06:03:31 2007 From: gagsl-py2 en yahoo.com.ar (Gabriel Genellina) Date: Tue Nov 6 06:03:50 2007 Subject: [Python-es] Re: =?iso-8859-15?q?Mi_primer_=22programa=22_en_python=2C_me_qued?= =?iso-8859-15?q?a_funciones_que_no_se_muy_bien_c=F3mo_solventar?= References: Message-ID: En Mon, 05 Nov 2007 23:03:59 -0300, acido || cuatroxl.org escribió: > Hola a todos, antes de nada explico lo que hace el programita: > > le paso un directorio y busca todos los archivos htm(podría buscar html o > algo así pero será para la próxima versión) para hacer lo siguiente: > -convierte los nombres de los tags en minúsculas, si lo hay > -convierte a codigo html los caracteres tipo(á, é, í, ó....); esto > lo > saca de un archivo configurable(config.txt) > -es recursivo en todas las carpetas hijas. Como ejercicio para ir aprendiendo está bien, pero para la sustitución yo usaría la tabla que ya existe en htmlentitydefs por ejemplo. Siempre es mejor confiar en algo que ya está probado en lugar de inventarlo desde cero. > El código ya funciona, pero me gustaría: > -que me reportara el error(en caso de haberlo) que se puede > presentar > a la hora de sobrescribir el archivo > -me preocupa que exista archivos en utf8 y yo los guarde como > ansii, > como detecto que codificación tiene??????? Habría que mirar los encabezados del archivo, y para eso tendrías que usar una clase que específicamente entienda HTML... y en ese caso casi todo el programa carece de sentido porque lo que estas haciendo ya deberia estar soportado... Ahora, si se trata de "adivinar", podrias probar con Universal Encoding Detector: http://chardet.feedparser.org/ (hecho por el autor de un buen libro sobre Python, Mark Pilgrim: "Dive Into Python") > def Mm(f): Mm?????? f????? Acaso el gobierno ya lanzó un impuesto a las letras usadas en identificadores? ;) > coincidencias1=re.findall("[\n][^<]*[>]",f) > coincidencias2=re.findall("[<][^>]*[\n]",f) > coincidencias3=re.findall("[<].*[>]",f) En general nunca es buena idea parsear html "a mano". Aunque quieras, usando expresiones regulares no vas a poder con todos los casos. > resultado=f > for i in coincidencias1: > busca=re.search(i,resultado) > if busca: > p1=busca.start() > p2=busca.end() > resultado1=resultado[:p1] > resultado2=resultado[p2:] > anadido=string.lower(f[p1:p2]) > resultado=resultado1+anadido+resultado2 (Otra vez los nombres de 1 letra... http://es.wikipedia.org/wiki/Python#Filosof.C3.ADa ) La verdad no entiendo qué es lo que pretendías hacer acá... Porqué buscar dos veces? Es decir, si ya encontraste todas las apariciones con findall, porque el segundo search? Además, la idea no es convertir los TAGS nada mas en minusculas? Esto no te convierte tambien los atributos y el contenido? > for i in coincidencias2: [mismo bloque repetido] > for i in coincidencias3: [mismo bloque repetido] Suponiendo que el primer bloque estuviera bien escrito, en lugar de copiarlo 3 veces cambiando coincidencias1,2,3 podrias haberlo englobado en un bloque mas externo, así: for coincidencias in coincidencias1, coincidencias2, coincidencias3: for grupo in coincidencias: #... > return resultado >def corrige(archivo, caracterValor): > flectura=open(archivo,'r') > contenido=flectura.read() > flectura.close() > contenido=Mm(contenido) > contenido=reemplaza(caracterValor, contenido) > #aquí guardas el nuevo > #si toddo ok devuelve true > #si falla algo devuelve false y para todo > fescritura=open(archivo, 'w') > fescritura.write(contenido); > fescritura.close Faltan los (), sino no estas llamando a la funcion: fescritura.close() > #aquí siempre devuelve true, pero realmente no comprueba nada > return 1 No hace falta "comprobar" nada, si hubiera algun error en el close (que no estabas ejecutando) se dispara una excepcion. Si no haces nada especial, tu programa va a abortar en ese punto (y puede ser lo más recomendable) Ademas no devuelve true, devuelve 1. El valor booleano del 1 es True, pero eso es otra cosa. True como tal es una instancia de la clase bool. > def getCaracterValor(path='config.txt'): > salida=[] > flectura=open(os.path.join(path),'r') os.path.join(path) es lo mismo que path... (?) > for i in flectura: > a = i.split('=') > a[1] = a[1][0:-1] > salida.append((a[0],a[1])) > flectura.close Igual que el close de arriba. > return salida > def getFiles(path): "Aca deberia haber una descripcion de esta funcion" > src = os.path.realpath(path) > for i in os.listdir(path): Uh... "i" como nombre de variable sólo se usa para el índice de un bucle... Yo acá usaría nombre_archivo por ejemplo. O apenas nombre. Pero no i a secas. > if os.path.isfile(os.path.join(path, i)): En lugar de iterar a mano y discriminar si es un archivo o un directorio, podrias usar directamente os.walk y olvidarte de la recursion. Algo asi: for dirpath, dirs, archs in os.walk(path): for nombre in archs: ... lo de abajo > _extension=i.split('.')[-1] Mejor os.path.splitext(nombre)[1] (ojo que incluye el punto). Porqué el guión bajo? Se usa para nombres de *atributos* que uno quiere que sean privados, pero para variables locales no tiene mucho sentido. > if _extension == 'htm': > if corrige(src+'\\'+i, getCaracterValor()): Arriba usaste os.path.join asi que ya lo conocias... porque entonces aca estas concatenando a mano? Si usas la variante con os.walk, aca deberia decir os.path.join(dirpath, nombre). Y lo podrias guardar en una variable, por ejemplo, nombre_completo, para usarla tambien en los dos prints de abajo. > print src+'\\'+i+'------------->OK' > else: > print src+'\\'+i+'------------->NO' > if os.path.isdir(os.path.join(path, i)): > getFiles(src+'\\'+i) Usando os.walk, la recursion es automatica asi que estas dos lineas no van. -- Gabriel Genellina From damufo en gmail.com Tue Nov 6 09:15:35 2007 From: damufo en gmail.com (damufo) Date: Tue Nov 6 09:22:19 2007 Subject: [Python-es] sobre python portable In-Reply-To: <2E22600791B02E42A475C3BBE6323105050825BF@ucixs56.uci.cu> References: <2c9fb0dd0711012038l50de186fhdb166f17377ea2a7@mail.gmail.com><2E22600791B02E42A475C3BBE6323105050825BC@ucixs56.uci.cu> <1194275581.6055.7.camel@cucusa.islascruz.org> <2E22600791B02E42A475C3BBE6323105050825BF@ucixs56.uci.cu> Message-ID: <473022A7.8010708@gmail.com> Hola: Si pones en google "portable p