From minoztro en gmail.com Thu May 1 01:02:27 2008 From: minoztro en gmail.com (Milton Galo Patricio Inostroza Aguilera) Date: Thu May 1 01:02:44 2008 Subject: [Python-es] agregar un campo a object - ex [id de objetos] Message-ID: <172699c50804301602i7bce46c4g5f071c6e130ee6ae@mail.gmail.com> Estimados: Hace ya un tiempo que estoy construyendo un depurador omnisciente [1] para python. Todo ha ido de maravillas hasta que me he topado con el siguiente requerimiento: * Cada objeto que se cree deberá tener un identificador único dentro del programa De buenas a primeras pensé en la funcion id(), pero como ya se discutió anteriormente en esta lista y leyendo la documentación oficial, la funcion id() no garantiza repetir el id para diferentes objetos (considerando obviamente que el objeto que antes tenia ese id ya no existe y fue destruido por el gc, entonces el sistema podría asignar ese id a un nuevo objeto que se construya). Consultando en el canal en español y en ingles de python, he recibido bastantes criticas por lo que deseo hacer y en realidad no he recibido demasiadas ayudas, exceptuando a Mario y Chema. Es por lo anterior que deseo me guíen para poder realizar lo que quiero: agregar un atributo a la clase object que esta escrita en el archivo object.c para que cada objeto que herede de éste tenga ese atributo especial, que en mi caso sera un identificador único. El asunto del identificador único no es sólo un capricho si no que es necesario para poder mantener siempre una identificación de cada objeto que esta cambiando y de que forma lo esta haciendo, independientemente si ese objeto es destruido la idea es poder mantener su historial. Bueno como todo parte por casa me he imprimido el python/C API Reference Manual y Extending and Embedding the Python Interpreter y pretendo leerlos. Agradecería mucho cualquier ayuda de ustedes...quizás estoy equivocado al querer modificar la implementación de object...esto ya es un mundo nuevo para mi y necesito el apoyo y orientación de ustedes, espero comentarios, saludos Ejemplo de lo que necesito: 1 def fun(): 2 a = [] # 3 a.append(3) lo que hace el depurador hasta el momento es: 1) detecta el call de fun, para esto utilizo settrace 1) se registra la funcion 2) se inspecciona el bytecode del frame a través de frame.f_code 3) se crea un mapa del bytecode con los índices para poder manejar los cambios del f_lasti 2) detecta la linea 2 a través del evento line del settrace 2.1) se pregunta en el mapa creado, por el f_lasti actual si es que en la anterior instrucción se encontró un store_fast, de ser así, se registra el nombre de la variable local y luego si id = numero que esta en el bytecode que es la posición que ocupa en co_varnames {acá aun no se toma en cuenta las variables libres y las que están ligadas} 2.2) registra la variable local 2.3) Se detecta una modificación en el valor de la variable local a, entonces se registra ese evento y se debe enviar el nuevo valor de la variable a. Si el valor es un int, string, float, etc podemos mandar el valor solamente....pero si es una lista, tupla u otro objeto no puedo enviar el valor si no que el identificador único que se debe generar al momento de construir en este caso el objeto lista. settrace no captura la construcción de una lista y eso me parece razonable ya que creo que esos son objetos y eventos internos del lenguaje. Acá reside el problema del id único para ese tipo de objetos. 2.4) en la linea 3 existe otro problema parecido ya que no soy notificado a través de settrace del llamado de esa función, pero creo que debo ir de un problema a la vez. Es importante señalar que cuando hablo de registrar o registrar la modificación de una variable, en realidad lo que se esta haciendo es enviar a través de un socket utilizando la librería xdrlib los datos a una aplicación escrita en Java que se llama TOD {Trace-Oriented Debugger} [2] que es un depurador omnisciente escrito en Java..entonces estamos aprovechando la base de datos que se implementó en ese proyecto para registrar nuestros datos. Bueno no me quiero extender más....espero haberme explicado, saludos y gracias por la ayuda [1] http://www.lambdacs.com/debugger/ [2] http://pleiad.dcc.uchile.cl/research/software/tod -- Milton Inostroza Aguilera From cloudneozero en gmail.com Thu May 1 04:09:10 2008 From: cloudneozero en gmail.com (Ark) Date: Thu May 1 04:09:16 2008 Subject: [Python-es] Preguntas de iniciado In-Reply-To: <48182859.4050304@diselpro.com> References: <9685383c0804290454w1443abfegdb0b1cd2f302eb7f@mail.gmail.com> <932c33150804290923hb132108x541472b10cfaaf58@mail.gmail.com> <1209487451.7344.19.camel@cucusa> <48182859.4050304@diselpro.com> Message-ID: <9dd22c9c0804301909m448014cbn72833dedb23450cc@mail.gmail.com> Realmente si lo que deseas es aprender lógica de programación, o un paradigma como el orientado a objetos (u otro) lo ideal es un lenguaje de alto nivel. La idea es entender conceptos abstractos, que son independientes de la máquina en los que se apliquen y un lenguaje como C hará que te veas pensando en muchas ocasiones en la arquitectura de tu máquina, y no tanto en entender lo que es el polimorfismo, la herencia, y otros de cada paradigma. Como ejemplo, en la universidad en la que estudio se cambió de C para estudiante de primer semestre a Scheme, un lenguaje funcional del paradigma declarativo, y más adelante se enseña C y otros paradigmas. Ark From py en ch3m4.org Thu May 1 04:07:14 2008 From: py en ch3m4.org (Chema Cortes) Date: Thu May 1 04:14:43 2008 Subject: [Python-es] agregar un campo a object - ex [id de objetos] In-Reply-To: <172699c50804301602i7bce46c4g5f071c6e130ee6ae@mail.gmail.com> References: <172699c50804301602i7bce46c4g5f071c6e130ee6ae@mail.gmail.com> Message-ID: <200805010407.21873.py@ch3m4.org> El Thursday 01 May 2008 01:02:27 Milton Galo Patricio Inostroza Aguilera escribió: > Estimados: > > Hace ya un tiempo que estoy construyendo un depurador omnisciente > [1] para python. Todo ha ido de maravillas hasta que me he topado con > el siguiente requerimiento: > > * Cada objeto que se cree deberá tener un identificador único dentro > del programa > > [...] > > Ejemplo de lo que necesito: > > 1 def fun(): > 2 a = [] # > 3 a.append(3) > > lo que hace el depurador hasta el momento es: > > 1) detecta el call de fun, para esto utilizo settrace > 1) se registra la funcion > 2) se inspecciona el bytecode del frame a través de frame.f_code > 3) se crea un mapa del bytecode con los índices para poder manejar > los cambios del f_lasti > > 2) detecta la linea 2 a través del evento line del settrace > 2.1) se pregunta en el mapa creado, por el f_lasti actual si es > que en la anterior instrucción se encontró un store_fast, > de ser así, se registra el nombre de la variable local y > luego si id = numero que esta en el bytecode que es la posición que > ocupa en co_varnames {acá aun no se toma en cuenta las variables > libres y las que están ligadas} > 2.2) registra la variable local > 2.3) Se detecta una modificación en el valor de la variable local > a, entonces se registra ese evento y se debe enviar el nuevo valor de > la variable a. Si el valor es un int, string, float, etc podemos > mandar el valor solamente....pero si es una lista, tupla u otro objeto > no puedo enviar el valor si no que el identificador único que se debe > generar al momento de construir en este caso el objeto lista. En algunos mensajes míos en esta lista podrás ver, en lo relativo al lenguaje python, que siempre he sido contrario al concepto de ver las "variables" como "almacenes" de datos. La variable 'a' no toma un valor; lo que hace en realidad es referenciar un objeto que está en memoria, sin determinar cuándo se creó (ni cuándo se destruirá). Si yo hago: a=b=1 no estoy creando dos objetos; lo curioso es que ni siquiera se está creando uno, ya que en python hay una serie de objetos que siempre existen, aunque no se usen, como son los números enteros desde -1 a 256 y los elementos vacíos () [] {} En cuanto a lo que quieres hacer, aunque lo entiendo, veo complicado su control. Por ejemplo, el cambio de los elementos de una lista no se puede entender como que la lista cambia. Por ejemplo: l1=[1,2,3] l2=[l1] l1.append(4) En el último paso ha cambiado l1, pero ¿se puede decir que haya cambiado también l2? Por otro lado, el object.c define la base de las nuevas clases, las que unifican tipos y clases. Aún existen las viejas clases, que van por otro lado: class P: pass issubclass(P,object) --> False No sabría cómo concretar mi ayuda. Aún así se me ocurren un par de cosas: - considera las listas de igual modo que el paso de variables por referencia, no como a objetos normales (eg: similar al Object& de C++) - guarda siempre una referencia a todo objeto, de este modo podrás seguir usando el id() sin riesgo a que se repita (a costa de requerir más memoria). Es más, ¿por qué no desactivas totalmente el recolector de basura durante el depurado? (gc.disable()). No hace falta que te advierta de la cantidad de memoria que vas a necesitar. ------------ 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/20080501/81184351/attachment.pgp From kalith.9 en gmail.com Thu May 1 14:50:24 2008 From: kalith.9 en gmail.com (kalith kalith) Date: Thu May 1 14:50:35 2008 Subject: [Python-es] Python OO Message-ID: <3da702830805010550u38f4777fp7746e676c5f6e5e2@mail.gmail.com> Buenas... Estoy empezando con la programacion OO, nunca antes lo habia hecho, he encontrado 2 o 3 tutoriales mas la doc oficial, pero me pregunto, si hay un libro de programacion orientada a objetos en python, o algun manual bien consistente.. asi como hay millones de c++... bueno si alguien tiene un link de referencia o algo, se agradece ... From gheize en gmail.com Thu May 1 16:44:57 2008 From: gheize en gmail.com (Guillermo Heizenreder) Date: Thu May 1 16:45:17 2008 Subject: [Python-es] Python OO In-Reply-To: <3da702830805010550u38f4777fp7746e676c5f6e5e2@mail.gmail.com> References: <3da702830805010550u38f4777fp7746e676c5f6e5e2@mail.gmail.com> Message-ID: <1209653097.5755.3.camel@nercof-desktop> El vie, 02-05-2008 a las 08:20 +0000, kalith kalith escribió: > Estoy empezando con la programacion OO, nunca antes lo habia hecho, he > encontrado 2 o 3 tutoriales mas la doc oficial, pero me pregunto, si > hay un libro de programacion orientada a objetos en python, o algun > manual bien consistente.. asi como hay millones de c++... bueno si > alguien tiene un link de referencia o algo, se agradece Libro entero no conozco, pero el capítulo 5 de Dive into Python [1] trata sobre eso, además este artículo [2] es muy interesante. Saludos! [1]http://diveintopython.org/ [2]http://blog.rvburke.com/2006/11/22/programacion-orientada-a-objetos-en-python/ -- +--------------------------------- | Heizenreder Guillermo | http://gheize.wordpress.com/ | http://code.google.com/u/gheize/ | http://tipslinux.blogspot.com/ +--------------------------------- From kalith.9 en gmail.com Thu May 1 16:56:09 2008 From: kalith.9 en gmail.com (kalith kalith) Date: Thu May 1 16:56:17 2008 Subject: [Python-es] Python OO In-Reply-To: <1209653097.5755.3.camel@nercof-desktop> References: <3da702830805010550u38f4777fp7746e676c5f6e5e2@mail.gmail.com> <1209653097.5755.3.camel@nercof-desktop> Message-ID: <3da702830805010756t51cc6ebdt9586975290f179af@mail.gmail.com> thx ^^ voy checando :D From francisco.palm en gmail.com Thu May 1 16:58:09 2008 From: francisco.palm en gmail.com (Francisco Palm) Date: Thu May 1 16:58:16 2008 Subject: [Python-es] Python OO In-Reply-To: <3da702830805010550u38f4777fp7746e676c5f6e5e2@mail.gmail.com> References: <3da702830805010550u38f4777fp7746e676c5f6e5e2@mail.gmail.com> Message-ID: 2008/5/2 kalith kalith : > Buenas... > > Estoy empezando con la programacion OO, nunca antes lo habia hecho, he > encontrado 2 o 3 tutoriales mas la doc oficial, pero me pregunto, si hay un > libro de programacion orientada a objetos en python, o algun manual bien > consistente.. asi como hay millones de c++... bueno si alguien tiene un link > de referencia o algo, se agradece ... La cuestión es que desde "el nuevo modelo de objetos de python" todo-todo-todo-toditito-de-todo en python es orientado a objetos. Entonces, acá el dilema es: - ¿Quieres aprender a programar orientado a objetos?: busca recursos generales sobre el tema - Quieres saber como lo que sabes sobre objetos se aplica a Python: toma el tutorial de python y el libro "inmersión en python" junto con tus apuntes del tema y trabaja por tu cuenta tratando de implementar lo que sabes en Python (te sorprenderás lo fácil que resulta). - Quieres sacarle el jugo a Python?: busca recursos sobre programación avanzada de objetos en python: metaprogramación, generadores, iteradores, manipulación de funciones, clases y módulos como objetos, etc. De cualquier manera, existe un libro reciente en inglés exclusivo sobre el tema: http://www.prenhall.com/goldwasser/ Te puedes buscar el código fuente de todos los ejemplos allí: http://www.prenhall.com/goldwasser/sourcecode.zip Saludos F. Palm -- -------------------------------------- fpalm@ula.ve francisco.palm@gmail.com cel: 0414 5109177 tel: 0274 6352001 ---- Yo creo que todavía no es demasiado tarde para construir una utopía que nos permita compartir la tierra. Gabriel García Márquez. From kalith.9 en gmail.com Thu May 1 19:24:57 2008 From: kalith.9 en gmail.com (kalith kalith) Date: Thu May 1 19:25:12 2008 Subject: [Python-es] Python OO In-Reply-To: References: <3da702830805010550u38f4777fp7746e676c5f6e5e2@mail.gmail.com> Message-ID: <3da702830805011024s29c9bae1nb0673e6f80075818@mail.gmail.com> pues la verdad me gustaria sacarle lo mas que se pueda al lenguaje, llevarlo a sus extremos de posibilidades.. el libro tiene una pinta genial... pero son mas de 200Bs.F que no tengo.. ni targeta de credito tengo, soy menor de edad... pero muchas gracias Francisco Palm respuestas asi dan gusto... From pepe en diselpro.com Thu May 1 23:37:53 2008 From: pepe en diselpro.com (Pepe Aracil) Date: Fri May 2 01:05:59 2008 Subject: [Python-es] Preguntas de iniciado In-Reply-To: <9dd22c9c0804301909m448014cbn72833dedb23450cc@mail.gmail.com> References: <9685383c0804290454w1443abfegdb0b1cd2f302eb7f@mail.gmail.com> <932c33150804290923hb132108x541472b10cfaaf58@mail.gmail.com> <1209487451.7344.19.camel@cucusa> <48182859.4050304@diselpro.com> <9dd22c9c0804301909m448014cbn72833dedb23450cc@mail.gmail.com> Message-ID: <481A3831.1040608@diselpro.com> Hola Ark. En mi caso no se trata de aprender paradigmas nuevos, se trata de un asunto práctico. Si aprendo java podré portar unas aplicaciones a j2me. Python es el lenguaje más productivo que he conocido con diferencia si tuviera que hacer un programa de uso intensivo de cpu como tratamiento de imágen, no dudaría en hacerlo primero 100% en python y posteriormente reescribir SOLO las partes criticas en C (solo si pyrex no da la talla). Estoy convencido que ganaría un 300% mas de productividad que si lo programase en C desde el principio. A todos los que me dicen que el lenguaje no es lo importante, que es una mera herramienta, yo les respondo que me lo paso doblemente bien, cuando analizo el problema y cuando lo implemento en python. ;-P Con lo taliban de python que soy, comprenderás mejor lo de mis nauseas con javagg!! Salud. Ark escribió: > Realmente si lo que deseas es aprender lógica de programación, o un > paradigma como el orientado a objetos (u otro) lo ideal es un lenguaje de > alto nivel. La idea es entender conceptos abstractos, que son > independientes de la máquina en los que se apliquen y un lenguaje como C > hará que te veas pensando en muchas ocasiones en la arquitectura de tu > máquina, y no tanto en entender lo que es el polimorfismo, la herencia, y > otros de cada paradigma. > > Como ejemplo, en la universidad en la que estudio se cambió de C para > estudiante de primer semestre a Scheme, un lenguaje funcional del paradigma > declarativo, y más adelante se enseña C y otros paradigmas. > > Ark > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes From minoztro en gmail.com Fri May 2 01:37:20 2008 From: minoztro en gmail.com (Milton Galo Patricio Inostroza Aguilera) Date: Fri May 2 01:38:21 2008 Subject: [Python-es] diferencias entre PyArg_ParseTuple y PyArg_ParseTupleAndKeywords? Message-ID: <172699c50805011637j70cf7202j91a612d3a8842eb1@mail.gmail.com> Estimados: Me he animado a aprender a programar modulos en c para python {para poder luego entender la implementacion misma del lenguaje}...y me he encontrado con estas dos funciones. En realidad no noto cual es la diferencia de uso de estas dos funciones, si bien es cierto que tienen una declaracion distintas (argumentos), en la utilizacion de estas no puedo ver la diferencia entre una y otra...muestro un ejemplo {que es el que esta en el manual de extending and embedding python}: static PyObject * keywdarg_parrot(PyObject *self, PyObject *args, PyObject *keywds) { int voltage; char *state = "a"; char *action = "a"; char *type = "a"; static char *kwlist[] = {"state", "action", "type","voltage", NULL}; if (!PyArg_ParseTupleAndKeywords(args, keywds, "i|sss",kwlist, &voltage,&state,&action,&type)) printf("%s %i \n",action,voltage); printf("%s %s \n",state,type); Py_INCREF(Py_None); return Py_None; } si en vez de utilizar el PyArg_ParseTupleAndKeywords, utilizo PyArg_ParseTuple de la siguiente manera: if(!PyArg_ParseTuple(args,"i|sss",&voltage,&state,&action,&type)) return NULL; El resultado es el mismo...entonces no se por donde pasa la diferencia de uso de estas dos funciones...y me queda otra duda cual es la mision de kwlist, tampoco la entiendo mucho..porque si en vez de poner los nombre de las variables y pongo cualquier cosa, el modulo cuando lo importo desde python funciona igualmente bien, la modificacion que realice a kwlist es la siguiente: static char *kwlist[] = {"algo", "algodos", "algotres","algocuatro", NULL}; Gracias por vuestra ayuda, saludos -- Milton Inostroza Aguilera From cloudneozero en gmail.com Fri May 2 02:40:06 2008 From: cloudneozero en gmail.com (Ark) Date: Fri May 2 02:40:24 2008 Subject: [Python-es] Preguntas de iniciado In-Reply-To: <481A3831.1040608@diselpro.com> References: <9685383c0804290454w1443abfegdb0b1cd2f302eb7f@mail.gmail.com> <932c33150804290923hb132108x541472b10cfaaf58@mail.gmail.com> <1209487451.7344.19.camel@cucusa> <48182859.4050304@diselpro.com> <9dd22c9c0804301909m448014cbn72833dedb23450cc@mail.gmail.com> <481A3831.1040608@diselpro.com> Message-ID: <9dd22c9c0805011740y4eb78a1dn8680a431e55998f4@mail.gmail.com> jaja, es verdad, depende de para que se valla a usar. Python aumenta enormemente la productividad en parte por la misma razón por la que es excelente para aprender a programar, porque simplemente no se interpone en el camino del programador. Las ideas se pueden llevar fácilmente de la etapa de diseño a la de imlpementación con gran ayuda de parte del lenguaje y para aquel que argumente el rendimiento de python pues se le hace notar la posibilidad de escribir extensiones en C (o más fácil en pyrex) para las partes críticas. Ark From marcosamorisa en gmail.com Fri May 2 04:11:52 2008 From: marcosamorisa en gmail.com (Marcos) Date: Fri May 2 04:12:04 2008 Subject: [Python-es] Muy Nuevo Message-ID: <481A7868.4010601@gmail.com> hola , que tal? soy MUY nuevo en esto de la programacion y estuve leyendo que el mejor lenguaje para empezar a programar es Python estan de acuerdo?? como puedo empezar ?? saludos From inigo_aldazabal en ehu.es Fri May 2 09:26:54 2008 From: inigo_aldazabal en ehu.es (Inigo Aldazabal Mensa) Date: Fri May 2 09:32:57 2008 Subject: [Python-es] Python OO In-Reply-To: <3da702830805010550u38f4777fp7746e676c5f6e5e2@mail.gmail.com> References: <3da702830805010550u38f4777fp7746e676c5f6e5e2@mail.gmail.com> Message-ID: <200805020926.54577.inigo_aldazabal@ehu.es> El Jueves, 1 de Mayo de 2008 14:50, kalith kalith escribió: > Buenas... > > Estoy empezando con la programacion OO, nunca antes lo habia hecho, he > encontrado 2 o 3 tutoriales mas la doc oficial, pero me pregunto, si hay > un libro de programacion orientada a objetos en python, o algun manual > bien consistente.. asi como hay millones de c++... bueno si alguien > tiene un link de referencia o algo, se agradece ... La parte final de "How to Think Like a Computer Scientist: Learning with Python."[1] está dedicada a OO. Buscando el enlace veo que hay una versión mas actual llamada "How to Think Like a (Python) Programmer"[2], al parecer una revisión/actualización del anterior. También puedes mirar el artículo "Programación orientada a objetos en Python"[3]. [1] http://www.greenteapress.com/thinkpython/thinkCSpy/ [2] http://www.greenteapress.com/thinkpython/ [3] http://blog.rvburke.com/2006/11/22/programacion-orientada-a-objetos-en-python/ > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes From cgalisteo en k-rolus.net Fri May 2 13:50:13 2008 From: cgalisteo en k-rolus.net (Carlos Galisteo) Date: Fri May 2 13:50:33 2008 Subject: [Python-es] Muy Nuevo In-Reply-To: <481A7868.4010601@gmail.com> References: <481A7868.4010601@gmail.com> Message-ID: <20080502115012.GA26344@k-rolus.net> On Thu, May 01, 2008 at 11:11:52PM -0300, Marcos wrote: > soy MUY nuevo en esto de la programacion y estuve leyendo que el mejor > lenguaje para empezar a programar es Python Pues hombre...yo no hablaría en términos tan absolutos. En mi opinión es, sin duda, uno de los mejores, pero hay muchas posibles opciones, como se ha comentado en recientes hilos de esta misma lista, sobre todo depende de tus intereses. -- --- Carlos Galisteo Jabber_Id::cgalisteo en jabber.org PGP_key::http://k-rolus.net/~cgalisteo/cgalisteo.gpg Key_Fingerprint::F888 6FBA 9145 B5A2 C187 66D6 5B8C 027A 69AD BE65 --- From cdgarciaq en yahoo.com Fri May 2 14:12:35 2008 From: cdgarciaq en yahoo.com (Cesar Garcia) Date: Fri May 2 14:12:49 2008 Subject: [Python-es] Python OO Message-ID: <608401.90472.qm@web51701.mail.re2.yahoo.com> Buen Dia a Todos Lista !!! Empece a practicar python en programación aun no he terminado, pero tengo una coleccion de 42 libros desde el mas básico hasta el mas avanzado en Ingles, los que desean estos libros me pueden escribir a mi mail personal cdgarciaq@yahoo.com son 162 mb aprox. Saludos ________________________________ Atte. César García ________________________________ ----- Mensaje original ---- De: Francisco Palm Para: Lista de discusión sobre python en castellano Enviado: viernes, 2 de mayo, 2008 1:58:09 Asunto: Re: [Python-es] Python OO 2008/5/2 kalith kalith : > Buenas... > > Estoy empezando con la programacion OO, nunca antes lo habia hecho, he > encontrado 2 o 3 tutoriales mas la doc oficial, pero me pregunto, si hay un > libro de programacion orientada a objetos en python, o algun manual bien > consistente.. asi como hay millones de c++... bueno si alguien tiene un link > de referencia o algo, se agradece ... La cuestión es que desde "el nuevo modelo de objetos de python" todo-todo-todo-toditito-de-todo en python es orientado a objetos. Entonces, acá el dilema es: - ¿Quieres aprender a programar orientado a objetos?: busca recursos generales sobre el tema - Quieres saber como lo que sabes sobre objetos se aplica a Python: toma el tutorial de python y el libro "inmersión en python" junto con tus apuntes del tema y trabaja por tu cuenta tratando de implementar lo que sabes en Python (te sorprenderás lo fácil que resulta). - Quieres sacarle el jugo a Python?: busca recursos sobre programación avanzada de objetos en python: metaprogramación, generadores, iteradores, manipulación de funciones, clases y módulos como objetos, etc. De cualquier manera, existe un libro reciente en inglés exclusivo sobre el tema: http://www.prenhall.com/goldwasser/ Te puedes buscar el código fuente de todos los ejemplos allí: http://www.prenhall.com/goldwasser/sourcecode.zip Saludos F. Palm -- -------------------------------------- fpalm@ula.ve francisco.palm@gmail.com cel: 0414 5109177 tel: 0274 6352001 ---- Yo creo que todavía no es demasiado tarde para construir una utopía que nos permita compartir la tierra. Gabriel García Márquez. _______________________________________________ Lista de correo Python-es http://listas.aditel.org/listinfo/python-es FAQ: http://listas.aditel.org/faqpyes From minoztro en gmail.com Fri May 2 15:40:09 2008 From: minoztro en gmail.com (Milton Galo Patricio Inostroza Aguilera) Date: Fri May 2 16:05:40 2008 Subject: [Python-es] Muy Nuevo In-Reply-To: <481A7868.4010601@gmail.com> References: <481A7868.4010601@gmail.com> Message-ID: <172699c50805020640t58f84945t94fe4c1c80c7b042@mail.gmail.com> El día 1 de mayo de 2008 22:11, Marcos escribió: > hola , que tal? > > > soy MUY nuevo en esto de la programacion y estuve leyendo que el mejor > lenguaje para empezar a programar es Python > > estan de acuerdo?? yo me entretengo mucho con Python > > como puedo empezar ?? Aca esta la pagina de la documentacion oficial [1], y para documentacion en español tenemos [2], ahora cualquier duda puntual que desees preguntar puedes utilizar google y si no encuentras respuestas a tus dudas puedes escribir a la lista. [1] http://www.python.org/doc/ [2] http://wiki.python.org/moin/Languages/Spanish?highlight=(CategoryLanguage) > > > > > saludos que tengas un buen dia > _______________________________________________ > Lista de correo Python-es http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes > -- Milton Inostroza Aguilera From marcosamorisa en gmail.com Fri May 2 20:35:55 2008 From: marcosamorisa en gmail.com (Marcos) Date: Fri May 2 20:36:27 2008 Subject: [Python-es] gracias Message-ID: <481B5F0B.1080705@gmail.com> Muchs gracias ahora lo voy a empezar a leer. Ya esube leyendo C tambien printf("SALUDOS"); From kalith.9 en gmail.com Fri May 2 23:38:48 2008 From: kalith.9 en gmail.com (kalith kalith) Date: Fri May 2 23:39:00 2008 Subject: [Python-es] Muy Nuevo In-Reply-To: <172699c50805020640t58f84945t94fe4c1c80c7b042@mail.gmail.com> References: <481A7868.4010601@gmail.com> <172699c50805020640t58f84945t94fe4c1c80c7b042@mail.gmail.com> Message-ID: <3da702830805021438o8e93d04p78b38f30502c88c7@mail.gmail.com> python es sencillamente genial.. para empezar o para hacerte programador lo que quieras... una cosa es que mmm la flexibilidad que te da python no la tienes en otros lenguajes... lete algo sobre listas (o arreglos) en python y luego te lees algo de C... terminaras amando python y ofreciendole un cordero al año de sacrificio.. como dijeron por ahi xD... na en broma pero python es genial... From gagsl-py2 en yahoo.com.ar Sat May 3 01:47:44 2008 From: gagsl-py2 en yahoo.com.ar (Gabriel Genellina) Date: Sat May 3 01:47:59 2008 Subject: [Python-es] Re: diferencias entre PyArg_ParseTuple y PyArg_ParseTupleAndKeywords? References: <172699c50805011637j70cf7202j91a612d3a8842eb1@mail.gmail.com> Message-ID: En Thu, 01 May 2008 20:37:20 -0300, Milton Galo Patricio Inostroza Aguilera escribió: > Me he animado a aprender a programar modulos en c para python {para > poder luego entender la implementacion misma del lenguaje}...y me he > encontrado con estas dos funciones. > > En realidad no noto cual es la diferencia de uso de estas dos > funciones, si bien es cierto que tienen una declaracion distintas > (argumentos), en la utilizacion de estas no puedo ver la diferencia > entre una y otra...muestro un ejemplo {que es el que esta en el manual > de extending and embedding python}: PyArg_ParseTuple solo procesa argumentos posicionales. Es decir, a la funcion hay que pasarle una tupla con los argumentos en el orden exacto en que estan declarados. La funcion en C tiene normalmente esta forma: PyObject * funcion(PyObject *self, PyObject *args) { ... } En Python es como si hubiera sido declarada asi: def funcion(*args): PyArg_ParseTupleAndKeywords procesa argumentos posicionales y nominales. Los argumentos posicionales se pasan en una tupla; los nominales en un diccionario. En C la funcion normalmente esta declarada asi: PyObject * funcion(PyObject *self, PyObject *args, PyObject *kwds) { ... } En Python es como si la declaracion hubiera sido: def funcion(*args, **keywds): Si la funcion espera argumentos por posicion exclusivamente (es decir, usa PyArg_ParseTuple), NO se le pueden pasar por nombre. Ejemplo: py> help(file.seek) Help on method_descriptor: seek(...) seek(offset[, whence]) -> None. Move to new file position. Argument offset is a byte count. Optional argument whence [...] Ahi dice que el primer argumento de seek se llama offset. Pero no se lo podemos pasar por nombre: py> open("un/archivo/que/exista").seek(offset=123) Traceback (most recent call last): File "", line 1, in TypeError: seek() takes no keyword arguments Mirando la documentacion exclusivamente, NO hay forma de saber si una funcion espera ser llamada con argumentos posicionales o nominales. > static PyObject * > keywdarg_parrot(PyObject *self, PyObject *args, PyObject *keywds) > { > int voltage; > char *state = "a"; > char *action = "a"; > char *type = "a"; > > static char *kwlist[] = {"state", "action", "type","voltage", NULL}; > if (!PyArg_ParseTupleAndKeywords(args, keywds, "i|sss",kwlist, > &voltage,&state,&action,&type)) > > printf("%s %i \n",action,voltage); > printf("%s %s \n",state,type); > Py_INCREF(Py_None); > return Py_None; > } > > > si en vez de utilizar el PyArg_ParseTupleAndKeywords, utilizo > PyArg_ParseTuple de la siguiente manera: > > if(!PyArg_ParseTuple(args,"i|sss",&voltage,&state,&action,&type)) > return NULL; > > El resultado es el mismo...entonces no se por donde pasa la diferencia El resultado es el mismo *sólo* si la llamada la haces con una tupla que contiene los argumentos en ese mismo orden. Trasladado mas o menos en Python, el primer caso es: def funcion(*args, **kwargs): state = 'a' action = 'a' type = 'a' voltage = args.pop(0) assert not args, "argumento posicional inesperado: %r" % args # el if está porque es opcional if 'state' in kwargs: state = kwargs.pop('state') if 'action' in kwargs: action = kwargs.pop('action') if 'type' in kwargs: type = kwargs.pop('type') assert not kwargs, "argumento nominal inesperado: %r" % kwargs y el segundo: def funcion(*args): state = 'a' action = 'a' type = 'a' voltage = args.pop(0) # estos otros son opcionales if args: state = args.pop(0) if args: action = args.pop(0) if args: type = args.pop(0) assert not args, "argumento posicional inesperado: %r" % args (con la diferencia de que esos pop() NO modifican la tupla/diccionario originales) > de uso de estas dos funciones...y me queda otra duda cual es la mision > de kwlist, tampoco la entiendo mucho..porque si en vez de poner los > nombre de las variables y pongo cualquier cosa, el modulo cuando lo > importo desde python funciona igualmente bien, la modificacion que > realice a kwlist es la siguiente: > > static char *kwlist[] = {"algo", "algodos", "algotres","algocuatro", > NULL}; Lo que esta a la derecha de la | es opcional; asi que si tu formato era el mismo de arriba ("i|sss") entonces solo el primer argumento "algo" era obligatorio; si se lo pasaste en la tupla args entonces todos los demás eran opcionales y podian no existir. Ademas en el primer ejemplo veo que no estas verificando bien el codigo de retorno de PyArg_ParseXXX (que probablemente devolvio NULL) asi que si te dio error, no te enteraste. -- Gabriel Genellina From gagsl-py2 en yahoo.com.ar Sat May 3 02:51:38 2008 From: gagsl-py2 en yahoo.com.ar (Gabriel Genellina) Date: Sat May 3 02:51:58 2008 Subject: [Python-es] Re: agregar un campo a object - ex [id de objetos] References: <172699c50804301602i7bce46c4g5f071c6e130ee6ae@mail.gmail.com> <200805010407.21873.py@ch3m4.org> Message-ID: En Wed, 30 Apr 2008 23:07:14 -0300, Chema Cortes escribió: > El Thursday 01 May 2008 01:02:27 Milton Galo Patricio Inostroza Aguilera > escribió: >> Estimados: >> >> * Cada objeto que se cree deberá tener un identificador único dentro >> del programa >> [... respuesta de Chema Cortes con la que estoy totalmente de acuerdo ...] > Por otro lado, el object.c define la base de las nuevas clases, las que > unifican tipos y clases. Aún existen las viejas clases, que van por otro > lado: > > class P: > pass > > issubclass(P,object) --> False Las clases viejas no *heredan* de object, pero igualmente son *instancias* de object como todo objeto en Python. py> isinstance(P, object) True Asi que en principio, para hacer lo que Milton quiere (y no estoy diciendo que sea una buena idea...) se le puede agregar un campo nuevo a PyObject (en object.h; probablemente en _PyObject_HEAD_EXTRA y _PyObject_EXTRA_INIT), modificar _PyObject_New y alrededores, recompilar Python, y rogar que todo siga funcionando :) > No sabría cómo concretar mi ayuda. Aún así se me ocurren un par de cosas: > > - considera las listas de igual modo que el paso de variables por > referencia, > no como a objetos normales (eg: similar al Object& de C++) > > - guarda siempre una referencia a todo objeto, de este modo podrás seguir > usando el id() sin riesgo a que se repita (a costa de requerir más > memoria). No sirve porque cambia el comportamiento del programa. Aun cuando uno "no deberia" depender de eso, hay mucho codigo que asume que los objetos locales desaparecen ni bien se van de ámbito, por poner un ejemplo. O aunque sea, que "eventualmente" los objetos se destruyen. Y eso ya no pasaría mas. > Es más, ¿por qué no desactivas totalmente el recolector de basura > durante el > depurado? (gc.disable()). No hace falta que te advierta de la cantidad de > memoria que vas a necesitar. Tampoco sirve de mucho. Todos los objetos se destruyen ni bien se libera su ultima referencia; el gc sólo busca ciclos de referencias entre objetos que no esten referenciados desde fuera del propio ciclo (y entonces simplemente libera una de las referencias; eso provoca una liberacion en cascada del ciclo completo). Pero no es realmente el gc quien destruye los objetos. py> class X: ... def __del__(self): print "destruyendo", self ... py> x = X() py> del x destruyendo <__main__.X instance at 0x00A3BE90> py> import gc py> gc.disable() py> x = X() py> del x destruyendo <__main__.X instance at 0x00B19788> -- Gabriel Genellina From minoztro en gmail.com Sat May 3 03:54:22 2008 From: minoztro en gmail.com (Milton Galo Patricio Inostroza Aguilera) Date: Sat May 3 03:54:33 2008 Subject: [Python-es] Re: diferencias entre PyArg_ParseTuple y PyArg_ParseTupleAndKeywords? In-Reply-To: References: <172699c50805011637j70cf7202j91a612d3a8842eb1@mail.gmail.com> Message-ID: <172699c50805021854k2307754cwdc1b5d7ebb131dad@mail.gmail.com> 2008/5/2 Gabriel Genellina : > En Thu, 01 May 2008 20:37:20 -0300, Milton Galo Patricio Inostroza Aguilera > escribió: > > > > > Me he animado a aprender a programar modulos en c para python {para > > poder luego entender la implementacion misma del lenguaje}...y me he > > encontrado con estas dos funciones. > > > > En realidad no noto cual es la diferencia de uso de estas dos > > funciones, si bien es cierto que tienen una declaracion distintas > > (argumentos), en la utilizacion de estas no puedo ver la diferencia > > entre una y otra...muestro un ejemplo {que es el que esta en el manual > > de extending and embedding python}: > > > > PyArg_ParseTuple solo procesa argumentos posicionales. Es decir, a la > funcion hay que pasarle una tupla con los argumentos en el orden exacto en > que estan declarados. La funcion en C tiene normalmente esta forma: > > PyObject * > funcion(PyObject *self, PyObject *args) > { > ... > } > > En Python es como si hubiera sido declarada asi: > > def funcion(*args): > > PyArg_ParseTupleAndKeywords procesa argumentos posicionales y nominales. > Los argumentos posicionales se pasan en una tupla; los nominales en un > diccionario. En C la funcion normalmente esta declarada asi: > > PyObject * > funcion(PyObject *self, PyObject *args, PyObject *kwds) > { > ... > } > > En Python es como si la declaracion hubiera sido: > > def funcion(*args, **keywds): > > Si la funcion espera argumentos por posicion exclusivamente (es decir, usa > PyArg_ParseTuple), NO se le pueden pasar por nombre. Ejemplo: > > py> help(file.seek) > Help on method_descriptor: > > seek(...) > seek(offset[, whence]) -> None. Move to new file position. > > Argument offset is a byte count. Optional argument whence [...] > > Ahi dice que el primer argumento de seek se llama offset. Pero no se lo > podemos pasar por nombre: > > py> open("un/archivo/que/exista").seek(offset=123) > Traceback (most recent call last): > File "", line 1, in > TypeError: seek() takes no keyword arguments > > Mirando la documentacion exclusivamente, NO hay forma de saber si una > funcion espera ser llamada con argumentos posicionales o nominales. > > > > > static PyObject * > > keywdarg_parrot(PyObject *self, PyObject *args, PyObject *keywds) > > { > > int voltage; > > char *state = "a"; > > char *action = "a"; > > char *type = "a"; > > > > static char *kwlist[] = {"state", "action", "type","voltage", NULL}; > > if (!PyArg_ParseTupleAndKeywords(args, keywds, "i|sss",kwlist, > > > &voltage,&state,&action,&type)) > > > > printf("%s %i \n",action,voltage); > > printf("%s %s \n",state,type); > > Py_INCREF(Py_None); > > return Py_None; > > } > > > > > > si en vez de utilizar el PyArg_ParseTupleAndKeywords, utilizo > > PyArg_ParseTuple de la siguiente manera: > > > > if(!PyArg_ParseTuple(args,"i|sss",&voltage,&state,&action,&type)) > > return NULL; > > > > El resultado es el mismo...entonces no se por donde pasa la diferencia > > > > El resultado es el mismo *sólo* si la llamada la haces con una tupla que > contiene los argumentos en ese mismo orden. Trasladado mas o menos en > Python, el primer caso es: > > def funcion(*args, **kwargs): > state = 'a' > action = 'a' > type = 'a' > > voltage = args.pop(0) > assert not args, "argumento posicional inesperado: %r" % args > # el if está porque es opcional > if 'state' in kwargs: state = kwargs.pop('state') > if 'action' in kwargs: action = kwargs.pop('action') > if 'type' in kwargs: type = kwargs.pop('type') > assert not kwargs, "argumento nominal inesperado: %r" % kwargs > > y el segundo: > > def funcion(*args): > state = 'a' > action = 'a' > type = 'a' > > voltage = args.pop(0) > # estos otros son opcionales > if args: state = args.pop(0) > if args: action = args.pop(0) > if args: type = args.pop(0) > assert not args, "argumento posicional inesperado: %r" % args > > (con la diferencia de que esos pop() NO modifican la tupla/diccionario > originales) > > > > > de uso de estas dos funciones...y me queda otra duda cual es la mision > > de kwlist, tampoco la entiendo mucho..porque si en vez de poner los > > nombre de las variables y pongo cualquier cosa, el modulo cuando lo > > importo desde python funciona igualmente bien, la modificacion que > > realice a kwlist es la siguiente: > > > > static char *kwlist[] = {"algo", "algodos", "algotres","algocuatro", > NULL}; > > > > Lo que esta a la derecha de la | es opcional; asi que si tu formato era el > mismo de arriba ("i|sss") entonces solo el primer argumento "algo" era > obligatorio; si se lo pasaste en la tupla args entonces todos los demás eran > opcionales y podian no existir. Ufff, excelente explicacion...me ha quedado muy claro, muchas gracias :) Ademas en el primer ejemplo veo que no estas > verificando bien el codigo de retorno de PyArg_ParseXXX (que probablemente > devolvio NULL) asi que si te dio error, no te enteraste. > oumm, la verificacion la estoy haciendo igual como en el manual oficial [1] y en la referencia dice que PyArg_ParseTuple retorna un false o un simil [2]. Como crees tu que sea mejor, ya que veo que tienes mas experiencia y la idea es siempre aprender de los que saben mas :) [1] http://docs.python.org/ext/backToExample.html Going back to our example function, you should now be able to understand this statement: if (!PyArg_ParseTuple(args, "s", &command)) return NULL; [2] http://docs.python.org/api/arg-parsing.html#l2h-210 > -- > Gabriel Genellina > > > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes > -- Milton Inostroza Aguilera From minoztro en gmail.com Sat May 3 04:14:55 2008 From: minoztro en gmail.com (Milton Galo Patricio Inostroza Aguilera) Date: Sat May 3 04:15:11 2008 Subject: [Python-es] Re: agregar un campo a object - ex [id de objetos] In-Reply-To: References: <172699c50804301602i7bce46c4g5f071c6e130ee6ae@mail.gmail.com> <200805010407.21873.py@ch3m4.org> Message-ID: <172699c50805021914p3a3a22d2rd34c125dc6725f64@mail.gmail.com> El día 2 de mayo de 2008 20:51, Gabriel Genellina escribió: > En Wed, 30 Apr 2008 23:07:14 -0300, Chema Cortes escribió: > > > > > > El Thursday 01 May 2008 01:02:27 Milton Galo Patricio Inostroza Aguilera > > escribió: > > > > > Estimados: > > > > > > > > > * Cada objeto que se cree deberá tener un identificador único dentro > > > del programa > > > > > > > > > > [... respuesta de Chema Cortes con la que estoy totalmente de acuerdo ...] > > > > > Por otro lado, el object.c define la base de las nuevas clases, las que > > unifican tipos y clases. Aún existen las viejas clases, que van por otro > > lado: > > > > class P: > > pass > > > > issubclass(P,object) --> False > > > > Las clases viejas no *heredan* de object, pero igualmente son *instancias* > de object como todo objeto en Python. > > py> isinstance(P, object) > True > > Asi que en principio, para hacer lo que Milton quiere (y no estoy diciendo > que sea una buena idea...) se le puede agregar un campo nuevo a PyObject (en > object.h; probablemente en _PyObject_HEAD_EXTRA y _PyObject_EXTRA_INIT), > modificar _PyObject_New y alrededores, recompilar Python, y rogar que todo > siga funcionando :) Aja!!...entonces es posible tratar de hacer lo que "no se debe hacer"...gracias por la guia...pero creo que lo mas respetuoso es primero programar un tipo de datos el cual implemente el asunto del identificador, ver como funciona....y luego ser irrespetuoso y hacer modificaciones que estamos claros que no son buenas hacerlas, pero asi se va aprendiendo en este mundo de la programacion > > > > > No sabría cómo concretar mi ayuda. Aún así se me ocurren un par de cosas: > > > > - considera las listas de igual modo que el paso de variables por > referencia, > > no como a objetos normales (eg: similar al Object& de C++) > > > > - guarda siempre una referencia a todo objeto, de este modo podrás seguir > > usando el id() sin riesgo a que se repita (a costa de requerir más > memoria). > > > > No sirve porque cambia el comportamiento del programa. Aun cuando uno "no > deberia" depender de eso, hay mucho codigo que asume que los objetos locales > desaparecen ni bien se van de ámbito, por poner un ejemplo. O aunque sea, > que "eventualmente" los objetos se destruyen. Y eso ya no pasaría mas. > > > > > Es más, ¿por qué no desactivas totalmente el recolector de basura durante > el > > depurado? (gc.disable()). No hace falta que te advierta de la cantidad de > > memoria que vas a necesitar. > > > > Tampoco sirve de mucho. Todos los objetos se destruyen ni bien se libera su > ultima referencia; el gc sólo busca ciclos de referencias entre objetos que > no esten referenciados desde fuera del propio ciclo (y entonces simplemente > libera una de las referencias; eso provoca una liberacion en cascada del > ciclo completo). Pero no es realmente el gc quien destruye los objetos. > > py> class X: > ... def __del__(self): print "destruyendo", self > ... > py> x = X() > py> del x > destruyendo <__main__.X instance at 0x00A3BE90> > py> import gc > py> gc.disable() > py> x = X() > py> del x > destruyendo <__main__.X instance at 0x00B19788> interesante > > -- > Gabriel Genellina > > > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes > -- Milton Inostroza Aguilera From pych3m4 en gmail.com Sat May 3 04:19:05 2008 From: pych3m4 en gmail.com (Chema Cortes) Date: Sat May 3 04:19:12 2008 Subject: [Python-es] Re: agregar un campo a object - ex [id de objetos] In-Reply-To: References: <172699c50804301602i7bce46c4g5f071c6e130ee6ae@mail.gmail.com> <200805010407.21873.py@ch3m4.org> Message-ID: <2c9fb0dd0805021919w4f11f6d6qc3b2dc4a218fa587@mail.gmail.com> El día 3 de mayo de 2008 2:51, Gabriel Genellina escribió: > En Wed, 30 Apr 2008 23:07:14 -0300, Chema Cortes escribió: > > - guarda siempre una referencia a todo objeto, de este modo podrás seguir > > usando el id() sin riesgo a que se repita (a costa de requerir más > memoria). > > > > No sirve porque cambia el comportamiento del programa. Aun cuando uno "no > deberia" depender de eso, hay mucho codigo que asume que los objetos locales > desaparecen ni bien se van de ámbito, por poner un ejemplo. O aunque sea, > que "eventualmente" los objetos se destruyen. Y eso ya no pasaría mas. Un depurador nunca es completamente inocuo. La cuestión es saber limitarse a solucionar aquél código que realmente se pueda monitorizar. > > Es más, ¿por qué no desactivas totalmente el recolector de basura durante > el > > depurado? (gc.disable()). No hace falta que te advierta de la cantidad de > > memoria que vas a necesitar. > > > > Tampoco sirve de mucho. Todos los objetos se destruyen ni bien se libera su > ultima referencia; el gc sólo busca ciclos de referencias entre objetos que > no esten referenciados desde fuera del propio ciclo (y entonces simplemente > libera una de las referencias; eso provoca una liberacion en cascada del > ciclo completo). Pero no es realmente el gc quien destruye los objetos. Totalmente en lo cierto. No sirve como solución. From gagsl-py2 en yahoo.com.ar Sat May 3 04:38:40 2008 From: gagsl-py2 en yahoo.com.ar (Gabriel Genellina) Date: Sat May 3 04:39:05 2008 Subject: [Python-es] Re: Re: diferencias entre PyArg_ParseTuple y PyArg_ParseTupleAndKeywords? References: <172699c50805011637j70cf7202j91a612d3a8842eb1@mail.gmail.com> <172699c50805021854k2307754cwdc1b5d7ebb131dad@mail.gmail.com> Message-ID: En Fri, 02 May 2008 22:54:22 -0300, Milton Galo Patricio Inostroza Aguilera escribió: > 2008/5/2 Gabriel Genellina : >> Ademas en el primer ejemplo veo que no estas >> verificando bien el codigo de retorno de PyArg_ParseXXX (que >> probablemente >> devolvio NULL) asi que si te dio error, no te enteraste. > > oumm, la verificacion la estoy haciendo igual como en el manual > oficial [1] y en la referencia dice que PyArg_ParseTuple retorna un > false o un simil [2]. Como crees tu que sea mejor, ya que veo que > tienes mas experiencia y la idea es siempre aprender de los que saben > mas :) Esta bien, es como dice el manual, pero asi no esta escrito el codigo que mandaste en el mensaje original. Probablemente la linea "return NULL;" se borro. (Por eso alguna gente sugiere siempre usar las llaves { } en los if/while/for, para que no te pase eso) -- Gabriel Genellina From minoztro en gmail.com Sat May 3 04:46:19 2008 From: minoztro en gmail.com (Milton Galo Patricio Inostroza Aguilera) Date: Sat May 3 04:46:27 2008 Subject: [Python-es] Re: Re: diferencias entre PyArg_ParseTuple y PyArg_ParseTupleAndKeywords? In-Reply-To: References: <172699c50805011637j70cf7202j91a612d3a8842eb1@mail.gmail.com> <172699c50805021854k2307754cwdc1b5d7ebb131dad@mail.gmail.com> Message-ID: <172699c50805021946jada42e1ne6c4fb71d135158@mail.gmail.com> > > Esta bien, es como dice el manual, pero asi no esta escrito el codigo que > mandaste en el mensaje original. Probablemente la linea "return NULL;" se > borro. (Por eso alguna gente sugiere siempre usar las llaves { } en los > if/while/for, para que no te pase eso) Ok, de acuerdo. > > -- > Gabriel Genellina > > > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes > -- Milton Inostroza Aguilera From kalith.9 en gmail.com Sat May 3 14:32:30 2008 From: kalith.9 en gmail.com (kalith kalith) Date: Sat May 3 14:32:39 2008 Subject: [Python-es] Saber si es un archivo de texto Message-ID: <3da702830805030532j4a888c71yc56661526fa83507@mail.gmail.com> Buenas... Estoy desarrollando un pequeño script, y tengo una duda... el script involucra usar un archivo de texto con unas palabras que lo va a pasar como argumento (argv) pero quiero determinar si en realidad lo que se esta pasando es un archivo de texto.. porque pues cuando se le pasa algo que no es un archivo de texto pues da error... mmm habia pensado en hacerle algo asi if 'txt' in argv[x]: pero me di cuenta que pues si usas linux un archivo de texto no tienep orque llevar un .txt y pues que realmente no es la solucion... asi que como le hago para determinar si el argumento que le estoy pasando es realmente un archivo de texto... Gracias From necudeco en gmail.com Sat May 3 15:49:43 2008 From: necudeco en gmail.com (necudeco) Date: Sat May 3 15:49:55 2008 Subject: [Python-es] Saber si es un archivo de texto In-Reply-To: <3da702830805030532j4a888c71yc56661526fa83507@mail.gmail.com> References: <3da702830805030532j4a888c71yc56661526fa83507@mail.gmail.com> Message-ID: <2ccb93070805030649x583e937fm1d7a76ca6f557b6f@mail.gmail.com> usa el comando de sistema file para averiguar el tipo de cada archivo On Sat, May 3, 2008 at 7:32 AM, kalith kalith wrote: > Buenas... > > Estoy desarrollando un pequeño script, y tengo una duda... el script > involucra usar un archivo de texto con unas palabras que lo va a pasar > como > argumento (argv) pero quiero determinar si en realidad lo que se esta > pasando es un archivo de texto.. porque pues cuando se le pasa algo que no > es un archivo de texto pues da error... mmm habia pensado en hacerle algo > asi > > if 'txt' in argv[x]: > > pero me di cuenta que pues si usas linux un archivo de texto no tienep > orque > llevar un .txt y pues que realmente no es la solucion... asi que como le > hago para determinar si el argumento que le estoy pasando es realmente un > archivo de texto... > > Gracias > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes > -- NeCuDeCo Asociacion Peruana de Software Libre http://necudeco.com http://apesol.org Your Jugdment Day is NOW sudo kills -9 $richard_penguin_signature From kalith.9 en gmail.com Sat May 3 16:21:58 2008 From: kalith.9 en gmail.com (kalith kalith) Date: Sat May 3 16:22:07 2008 Subject: [Python-es] Saber si es un archivo de texto In-Reply-To: <2ccb93070805030649x583e937fm1d7a76ca6f557b6f@mail.gmail.com> References: <3da702830805030532j4a888c71yc56661526fa83507@mail.gmail.com> <2ccb93070805030649x583e937fm1d7a76ca6f557b6f@mail.gmail.com> Message-ID: <3da702830805030721r61a38e1dv70e9bcda16cc5622@mail.gmail.com> estuve probando esto, y no me da los resultados esperados... probe asi x = open('bla.txt', 'r') if type(x) == file: print 1 else: print 0 siempre el resultado me da 0... que creen que pueda ser... From rafaelcantos en hotmail.com Sat May 3 16:24:33 2008 From: rafaelcantos en hotmail.com (Rafael Cantos) Date: Sat May 3 16:24:45 2008 Subject: [Python-es] =?windows-1252?q?Comprobar_si_una_cadena_tiene_texto?= =?windows-1252?q?_o_n=FAmeros?= Message-ID: Buenas. ¿Hay alguna forma de saber si una cadena, contiene texto o un número? Saludos y gracias. Rafa Rafael Cantos Villanueva Estudiante de Ingeniería Técnica en Informática de Gestión, universidad de Córdoba. http://www.rafaelcantos.es E-MAIL: rafaelcantos@hotmail.com _________________________________________________________________ Tecnología, moda, motor, viajes,?suscríbete a nuestros boletines para estar siempre a la última http://newsletters.msn.com/hm/maintenanceeses.asp?L=ES&C=ES&P=WCMaintenance&Brand=WL&RU=http%3a%2f%2fmail.live.com From sonajadiabolica en gmail.com Sat May 3 16:29:02 2008 From: sonajadiabolica en gmail.com (aNgel rEsendiz g.) Date: Sat May 3 16:29:13 2008 Subject: =?ISO-8859-1?Q?Re:_[Python-es]_Comprobar_si_u?= =?ISO-8859-1?Q?na_cadena_tiene_texto_o_n=FAmeros?= In-Reply-To: References: Message-ID: <8d9e208f0805030729s3116c69fo72e1289a80abc5f5@mail.gmail.com> > ¿Hay alguna forma de saber si una cadena, contiene texto o un número? Puedes utilizar isdigit: >>> '1a2b3c'.isdigit() False >>> '123'.isdigit() True Saludos. -- aNgel rEsendiz.! From necudeco en gmail.com Sat May 3 16:29:46 2008 From: necudeco en gmail.com (necudeco) Date: Sat May 3 16:29:59 2008 Subject: [Python-es] Saber si es un archivo de texto In-Reply-To: <3da702830805030721r61a38e1dv70e9bcda16cc5622@mail.gmail.com> References: <3da702830805030532j4a888c71yc56661526fa83507@mail.gmail.com> <2ccb93070805030649x583e937fm1d7a76ca6f557b6f@mail.gmail.com> <3da702830805030721r61a38e1dv70e9bcda16cc5622@mail.gmail.com> Message-ID: <2ccb93070805030729l5c0122c9seee28846b42493b3@mail.gmail.com> no me explique bien.. en bash has esto file archivo.txt te va a devolver el tipo de archivo eso lo puedes llamar desde python usando system, exec u cualquier otra funciona para ejecutar comandos del sistema. Saludos 2008/5/3 kalith kalith : > estuve probando esto, y no me da los resultados esperados... > > probe asi > > x = open('bla.txt', 'r') > > if type(x) == file: > print 1 > else: > print 0 > > siempre el resultado me da 0... que creen que pueda ser... > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes > -- NeCuDeCo Asociacion Peruana de Software Libre http://necudeco.com http://apesol.org Your Jugdment Day is NOW sudo kills -9 $richard_penguin_signature From pyarnau en gmail.com Sat May 3 16:51:06 2008 From: pyarnau en gmail.com (Arnau Sanchez) Date: Sat May 3 16:50:54 2008 Subject: [Python-es] Saber si es un archivo de texto In-Reply-To: <3da702830805030532j4a888c71yc56661526fa83507@mail.gmail.com> References: <3da702830805030532j4a888c71yc56661526fa83507@mail.gmail.com> Message-ID: <481C7BDA.902@gmail.com> kalith kalith escribió: > pero me di cuenta que pues si usas linux un archivo de texto no tienep orque > llevar un .txt y pues que realmente no es la solucion... asi que como le > hago para determinar si el argumento que le estoy pasando es realmente un > archivo de texto... > Sin recurrir a aplicaciones externas (file), hay que tratar de adivinarlo (con algoritmos heurísticos más o menos simples). Ejemplo: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/173220 Por otro lado, a no ser que tu script tenga realmente que comportarse de forma diferente para ficheros binarios, no lo trataría de forma específica. Si el usuario pasa un binario en vez de un fichero de texto, es su problema. From markuz en islascruz.org Sat May 3 17:05:36 2008 From: markuz en islascruz.org (Marco Antonio Islas Cruz) Date: Sat May 3 18:52:32 2008 Subject: [Python-es] Comprobar si una cadena tiene texto o =?ISO-8859-1?Q?n=FAmeros?= In-Reply-To: <8d9e208f0805030729s3116c69fo72e1289a80abc5f5@mail.gmail.com> References: <8d9e208f0805030729s3116c69fo72e1289a80abc5f5@mail.gmail.com> Message-ID: <1209827136.7729.3.camel@cucusa> Utilizar isdigit te dira si la cadena en si es un numero real, pero si es un flotante o tiene algun otro caracter diferente al rango 0-9 entonces devolvera false. Si lo qu ete interesa es saber si tiene numeros o no, indiferentemente de si tiene otros caracteres podrias usar alguna expresion regular o iterar sobre sus valores y buscar algun caracter, u obtener solo los digitos: >>> a = 'abc1def2ghi3' >>> [k for k in a if k.isdigit()] ['1', '2', '3'] >>> Espero no estar entendiendo mal el asunto. a proposito, una cadena siempre contiene texto :-). On Sat, 2008-05-03 at 09:29 -0500, aNgel rEsendiz g. wrote: > > ¿Hay alguna forma de saber si una cadena, contiene texto o un número? > > Puedes utilizar isdigit: > > >>> '1a2b3c'.isdigit() > False > >>> '123'.isdigit() > True > > Saludos. -- <--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/20080503/b284d484/attachment.pgp From markuz en islascruz.org Sat May 3 17:09:52 2008 From: markuz en islascruz.org (Marco Antonio Islas Cruz) Date: Sat May 3 18:56:52 2008 Subject: [Python-es] Saber si es un archivo de texto In-Reply-To: <481C7BDA.902@gmail.com> References: <3da702830805030532j4a888c71yc56661526fa83507@mail.gmail.com> <481C7BDA.902@gmail.com> Message-ID: <1209827392.7729.5.camel@cucusa> On Sat, 2008-05-03 at 16:51 +0200, Arnau Sanchez wrote: > kalith kalith escribió: > > pero me di cuenta que pues si usas linux un archivo de texto no tienep orque > > llevar un .txt y pues que realmente no es la solucion... asi que como le > > hago para determinar si el argumento que le estoy pasando es realmente un > > archivo de texto... > > > Sin recurrir a aplicaciones externas (file), hay que tratar de > adivinarlo (con algoritmos heurísticos más o menos simples). Ejemplo: > > http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/173220 > > Por otro lado, a no ser que tu script tenga realmente que comportarse de > forma diferente para ficheros binarios, no lo trataría de forma > específica. Si el usuario pasa un binario en vez de un fichero de texto, > es su problema. Exacto, son bugs de capa 8, y contra eso no se puede. > _______________________________________________ > 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/20080503/6271ffab/attachment.pgp From fvillarroel en yahoo.com Sun May 4 04:36:05 2008 From: fvillarroel en yahoo.com (FERNANDO VILLARROEL) Date: Sun May 4 04:36:16 2008 Subject: [Python-es] UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 Message-ID: <122041.71704.qm@web34305.mail.mud.yahoo.com> Hola a todos. Estoy nuevamente con Turbogeras esta ves probando su nueva version 2.0 Nuevamente genere formularios usando crud. Turbogears viene por default con SqlAlchemy para acceder a los distintos motores, en mi caso yo sigo usando Postgres, ahora al intentar insertar un nuevo registro obtengo el siuiente error: UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 47: ordinal not in range(128) Encontre una explicacion para esto en: http://www.onlamp.com/pub/a/python/excerpt/pythonckbk_chap1/index.html Pero como lo resuelvo en mi proyecto de TG. Atento a sus comentarios. Fernando Villarroel ____________________________________________________________________________________ Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try it now. http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ From rafaelcantos en hotmail.com Sun May 4 11:46:56 2008 From: rafaelcantos en hotmail.com (Rafael Cantos) Date: Sun May 4 11:47:12 2008 Subject: [Python-es] =?windows-1252?q?RE=3A_Comprobar_si_una_cadena_tiene_texto_o_n?= =?windows-1252?q?=FAmeros?= In-Reply-To: <20080503145056.187AE15EF9CC@devnull.aditel.org> References: <20080503145056.187AE15EF9CC@devnull.aditel.org> Message-ID: Muchas gracias aNgel. Saludos. Rafa ¿Hay alguna forma de saber si una cadena, contiene texto o un número? Puedes utilizar isdigit:>>> '1a2b3c'.isdigit()False>>> '123'.isdigit()TrueSaludos.-- > aNgel rEsendiz.! _________________________________________________________________ Tecnología, moda, motor, viajes,?suscríbete a nuestros boletines para estar siempre a la última Guapos y guapas, clips musicales y estrenos de cine. From kalith.9 en gmail.com Sun May 4 15:49:04 2008 From: kalith.9 en gmail.com (kalith kalith) Date: Sun May 4 15:49:18 2008 Subject: [Python-es] Saber si es un archivo de texto In-Reply-To: <1209827392.7729.5.camel@cucusa> References: <3da702830805030532j4a888c71yc56661526fa83507@mail.gmail.com> <481C7BDA.902@gmail.com> <1209827392.7729.5.camel@cucusa> Message-ID: <3da702830805040649v1842ef29rc4e8cb57062edd7e@mail.gmail.com> gracias a todos por las respuestas :D... una cosa si bien dicen que son errores de capa 8 pero me gusta hacer los programas los mas amigables... siempre pensando en que el usuario final es torpe y se equivoca mucho... ademas es feo que si se equivocan ven tu programa con unos errores ahi... lo hice con try: blabla except IOError: blabla y me funciona bien gracias a todos :D From necudeco en gmail.com Sun May 4 16:05:43 2008 From: necudeco en gmail.com (necudeco) Date: Sun May 4 16:05:56 2008 Subject: [Python-es] Saber si es un archivo de texto In-Reply-To: <3da702830805040649v1842ef29rc4e8cb57062edd7e@mail.gmail.com> References: <3da702830805030532j4a888c71yc56661526fa83507@mail.gmail.com> <481C7BDA.902@gmail.com> <1209827392.7729.5.camel@cucusa> <3da702830805040649v1842ef29rc4e8cb57062edd7e@mail.gmail.com> Message-ID: <2ccb93070805040705t1bd17096me8c521176d1eca4@mail.gmail.com> Jaja que curiosa contradiccion. Por un lado quieres que los programas sean amigables para que tus usuarios esten a gusto y por otro lado , los llamas idiotas Jejeje 2008/5/4 kalith kalith : > gracias a todos por las respuestas :D... una cosa si bien dicen que son > errores de capa 8 pero me gusta hacer los programas los mas amigables... > siempre pensando en que el usuario final es torpe y se equivoca mucho... > ademas es feo que si se equivocan ven tu programa con unos errores ahi... > > lo hice con > try: > blabla > except IOError: > blabla > > y me funciona bien > > gracias a todos :D > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes > -- NeCuDeCo Asociacion Peruana de Software Libre http://necudeco.com http://apesol.org Your Jugdment Day is NOW sudo kills -9 $richard_penguin_signature From kalith.9 en gmail.com Sun May 4 17:28:43 2008 From: kalith.9 en gmail.com (kalith kalith) Date: Sun May 4 17:28:57 2008 Subject: [Python-es] Saber si es un archivo de texto In-Reply-To: <2ccb93070805040705t1bd17096me8c521176d1eca4@mail.gmail.com> References: <3da702830805030532j4a888c71yc56661526fa83507@mail.gmail.com> <481C7BDA.902@gmail.com> <1209827392.7729.5.camel@cucusa> <3da702830805040649v1842ef29rc4e8cb57062edd7e@mail.gmail.com> <2ccb93070805040705t1bd17096me8c521176d1eca4@mail.gmail.com> Message-ID: <3da702830805040828l50c96c76n875b48077f6a7299@mail.gmail.com> :P una cosa es querer que el usuario final este comodo con el programa que use y otra es aceptar la realidad... me gusta que las cositas pequeño que desarrollo, pues a pesar de su sencilles trato de que las posibilidades de error sean las menos posible prevyendo lo q t digo que el usuario generlamente hace cosas q no debe... bueno en fin.. solucione el problema From ramonsr en ipicfg.rimed.cu Sun May 4 17:32:19 2008 From: ramonsr en ipicfg.rimed.cu (ramonsr) Date: Sun May 4 17:32:44 2008 Subject: [Python-es] Saber si es un archivo de texto References: <3da702830805030532j4a888c71yc56661526fa83507@mail.gmail.com><481C7BDA.902@gmail.com> <1209827392.7729.5.camel@cucusa><3da702830805040649v1842ef29rc4e8cb57062edd7e@mail.gmail.com><2ccb93070805040705t1bd17096me8c521176d1eca4@mail.gmail.com> <3da702830805040828l50c96c76n875b48077f6a7299@mail.gmail.com> Message-ID: <003d01c8adfc$0aeac120$12140a0a@IPICFG> Hola: Soy principiante en python necesito docmuentacion si la tienes por favor enviamela . gacias :)) ----- Original Message ----- From: "kalith kalith" To: "Lista de discusión sobre python en castellano" Sent: Sunday, May 04, 2008 11:28 AM Subject: Re: [Python-es] Saber si es un archivo de texto :P una cosa es querer que el usuario final este comodo con el programa que use y otra es aceptar la realidad... me gusta que las cositas pequeño que desarrollo, pues a pesar de su sencilles trato de que las posibilidades de error sean las menos posible prevyendo lo q t digo que el usuario generlamente hace cosas q no debe... bueno en fin.. solucione el problema _______________________________________________ Lista de correo Python-es http://listas.aditel.org/listinfo/python-es FAQ: http://listas.aditel.org/faqpyes -- Este mensaje ha sido analizado por MailScanner en busca de virus y otros contenidos peligrosos, y se considera que está limpio. ** Nodo Comunicaciones IPI Cienfuegos ** ** WebPage:http://www.ipicfg.rimed.cu ** -- Este mensaje ha sido analizado por MailScanner en busca de virus y otros contenidos peligrosos, y se considera que está limpio. ** Nodo Comunicaciones IPI Cienfuegos ** ** WebPage:http://www.ipicfg.rimed.cu ** From ramonsr en ipicfg.rimed.cu Sun May 4 17:35:20 2008 From: ramonsr en ipicfg.rimed.cu (ramonsr) Date: Sun May 4 17:35:24 2008 Subject: [Python-es] (sin asunto) Message-ID: <007601c8adfc$76b02bc0$12140a0a@IPICFG> Hola a todos : soy un principiante ,,,,,,,,necesito docs sobre prog en python. -- Este mensaje ha sido analizado por MailScanner en busca de virus y otros contenidos peligrosos, y se considera que está limpio. ** Nodo Comunicaciones IPI Cienfuegos ** ** WebPage:http://www.ipicfg.rimed.cu ** From minoztro en gmail.com Sun May 4 17:49:55 2008 From: minoztro en gmail.com (Milton Galo Patricio Inostroza Aguilera) Date: Sun May 4 17:50:04 2008 Subject: [Python-es] (sin asunto) In-Reply-To: <007601c8adfc$76b02bc0$12140a0a@IPICFG> References: <007601c8adfc$76b02bc0$12140a0a@IPICFG> Message-ID: <172699c50805040849j7d782b15ke5b1446597008b00@mail.gmail.com> 2008/5/4 ramonsr : > Hola a todos : > > soy un principiante ,,,,,,,,necesito docs sobre prog en python. docs.python.org ahh!! y nunca olvides poner en el asunto de tu mensaje lo que quieres preguntar. > -- > Este mensaje ha sido analizado por MailScanner > en busca de virus y otros contenidos peligrosos, > y se considera que está limpio. > ** Nodo Comunicaciones IPI Cienfuegos ** > ** WebPage:http://www.ipicfg.rimed.cu ** > > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes > -- Milton Inostroza Aguilera From markuz en islascruz.org Sun May 4 17:57:50 2008 From: markuz en islascruz.org (Marco Antonio Islas Cruz) Date: Sun May 4 18:04:42 2008 Subject: [Python-es] Saber si es un archivo de texto In-Reply-To: <2ccb93070805040705t1bd17096me8c521176d1eca4@mail.gmail.com> References: <3da702830805030532j4a888c71yc56661526fa83507@mail.gmail.com> <481C7BDA.902@gmail.com> <1209827392.7729.5.camel@cucusa> <3da702830805040649v1842ef29rc4e8cb57062edd7e@mail.gmail.com> <2ccb93070805040705t1bd17096me8c521176d1eca4@mail.gmail.com> Message-ID: <1209916670.2939.0.camel@cucusa> Por ahi alguien que no recuerdo quien dijo que si tu crees que tus usuarios son idiotas entonces los que usen tus programas seran idiotas. (algo asi). On Sun, 2008-05-04 at 09:05 -0500, necudeco wrote: > Jaja que curiosa contradiccion. > > Por un lado quieres que los programas sean amigables para que tus usuarios > esten a gusto > y por otro lado , los llamas idiotas > > Jejeje > > 2008/5/4 kalith kalith : > > > gracias a todos por las respuestas :D... una cosa si bien dicen que son > > errores de capa 8 pero me gusta hacer los programas los mas amigables... > > siempre pensando en que el usuario final es torpe y se equivoca mucho... > > ademas es feo que si se equivocan ven tu programa con unos errores ahi... > > > > lo hice con > > try: > > blabla > > except IOError: > > blabla > > > > y me funciona bien > > > > gracias a todos :D > > _______________________________________________ > > 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/20080504/5480d08e/attachment.pgp From markuz en islascruz.org Sun May 4 18:00:22 2008 From: markuz en islascruz.org (Marco Antonio Islas Cruz) Date: Sun May 4 19:00:37 2008 Subject: [Python-es] (sin asunto) In-Reply-To: <007601c8adfc$76b02bc0$12140a0a@IPICFG> References: <007601c8adfc$76b02bc0$12140a0a@IPICFG> Message-ID: <1209916822.2939.3.camel@cucusa> Busca en python.org la documenacion, lee el tutorial y siempre ten a la mano la Referencia. Te recomiendo: * How to think like a computer scientist learning with python * Dive into python On Sun, 2008-05-04 at 11:35 -0400, ramonsr wrote: > Hola a todos : > > soy un principiante ,,,,,,,,necesito docs sobre prog en python. -- <--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/20080504/21283d48/attachment.pgp From ikarush en gmail.com Sun May 4 21:52:35 2008 From: ikarush en gmail.com (Daniel =?ISO-8859-1?Q?Gonz=E1lez_Cervi=F1o?=) Date: Sun May 4 21:52:51 2008 Subject: [Python-es] Problema al escribir ficheros. Message-ID: <1209930755.13530.3.camel@jules> Hola a todos. Llevo un buen rato intentando ejecutar un codigo tan sencillo como este: f = open ('fichero', 'rw') f.write ('cadena') y me salta la siguiente excepcion : Traceback (most recent call last): File "", line 1, in IOError: [Errno 9] Bad file descriptor El fichero en cuestion, tiene permisos 777 , intente tambien "inicializar el descriptor" f.seek ( 0 ,0 ) Y el caso es que no se por donde seguir mirando.. Un saludo - Daniel González Cerviño. Tel 653965048 From minoztro en gmail.com Sun May 4 22:41:24 2008 From: minoztro en gmail.com (Milton Galo Patricio Inostroza Aguilera) Date: Sun May 4 22:41:37 2008 Subject: [Python-es] Problema al escribir ficheros. In-Reply-To: <1209930755.13530.3.camel@jules> References: <1209930755.13530.3.camel@jules> Message-ID: <172699c50805041341u2334400el1fbac254db803658@mail.gmail.com> El día 4 de mayo de 2008 15:52, Daniel González Cerviño escribió: > Hola a todos. > > Llevo un buen rato intentando ejecutar un codigo tan sencillo como este: > > f = open ('fichero', 'rw') > f.write ('cadena') leete esto [1], y creo que como solucion le puedes decir a python la extension del archivo...es decir fichero.txt o lo que necesites [1] http://bugs.python.org/issue1422 Basicamente yo probe lo siguiente: >>> f = open ('fichero', 'w') >>> f.write("mensaje1") >>> f.write("mensaje2") >>> f.write("mensaje3") >>> f.close() >>> f = open ('fichero', 'r') >>> f.read() 'mensaje3mensaje2mensaje1' ahora si pruebas los dos modos 'wr' juntos te lanzara la exception que ya conoces > > y me salta la siguiente excepcion : > > Traceback (most recent call last): > File "", line 1, in > IOError: [Errno 9] Bad file descriptor > > El fichero en cuestion, tiene permisos 777 , > intente tambien "inicializar el descriptor" f.seek ( 0 ,0 ) > Y el caso es que no se por donde seguir mirando.. > > Un saludo > > > - > Daniel González Cerviño. > Tel 653965048 > > > > > > > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes > -- Milton Inostroza Aguilera From ikarush en gmail.com Mon May 5 00:35:06 2008 From: ikarush en gmail.com (=?ISO-8859-1?Q?Daniel_Gonz=E1lez?=) Date: Mon May 5 00:35:14 2008 Subject: [Python-es] Problema al escribir ficheros. In-Reply-To: <172699c50805041341u2334400el1fbac254db803658@mail.gmail.com> References: <1209930755.13530.3.camel@jules> <172699c50805041341u2334400el1fbac254db803658@mail.gmail.com> Message-ID: Gracias > > f = open ('fichero', 'rw') > > f.write ('cadena') > > leete esto [1], y creo que como solucion le puedes decir a python la > extension del archivo...es decir fichero.txt o lo que necesites > > [1] http://bugs.python.org/issue1422 > > > Basicamente yo probe lo siguiente: > > >>> f = open ('fichero', 'w') > >>> f.write("mensaje1") > >>> f.write("mensaje2") > >>> f.write("mensaje3") > >>> f.close() > >>> f = open ('fichero', 'r') > >>> f.read() > 'mensaje3mensaje2mensaje1' > > > ahora si pruebas los dos modos 'wr' juntos te lanzara la exception que > ya conoces > > > > y me salta la siguiente excepcion : > > > > Traceback (most recent call last): > > File "", line 1, in > > IOError: [Errno 9] Bad file descriptor > > > > El fichero en cuestion, tiene permisos 777 , > > intente tambien "inicializar el descriptor" f.seek ( 0 ,0 ) > > Y el caso es que no se por donde seguir mirando.. > > > > Un saludo > > > > > > - > > Daniel González Cerviño. > > Tel 653965048 > > > > > > > > > > > > > > _______________________________________________ > > Lista de correo Python-es > > http://listas.aditel.org/listinfo/python-es > > FAQ: http://listas.aditel.org/faqpyes > > > > > > -- > Milton Inostroza Aguilera > > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes > -- Daniel Gonzalez Cerviño tel 653965048 ikarush@gmail.com From punchikk en yahoo.com Mon May 5 06:12:51 2008 From: punchikk en yahoo.com (punchik punchik) Date: Mon May 5 06:12:58 2008 Subject: [Python-es] correr archivos python en servidor Message-ID: <550152.4391.qm@web32006.mail.mud.yahoo.com> hola, soy novato en python, he estado tratando de correr varios scripts en mi servidor web pero no me funciona, en todos me sale el mismo error, alguien tiene idea de porque sucede esto? mi servidor es dreamhost y si soporta scripts de python, no entiendo porque no lo reconoce, tendre que activar algo ? alguna idea?.. el error es el siguiente: gracias 500 internal server error Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, webmaster@metalex.net and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log. Additionally, a 404 Not Found error was encountered --------------------------------- Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try it now. From markuz en islascruz.org Mon May 5 06:23:57 2008 From: markuz en islascruz.org (Marco Antonio Islas Cruz) Date: Mon May 5 06:24:11 2008 Subject: [Python-es] correr archivos python en servidor In-Reply-To: <550152.4391.qm@web32006.mail.mud.yahoo.com> References: <550152.4391.qm@web32006.mail.mud.yahoo.com> Message-ID: <1209961437.14592.5.camel@cucusa> Los scripts en Python, asi como cualquier otro CGI deben enviar la salida con formato HTML, incluyendo los headers. PHP lo hace, solo que no te das cuenta de que lo hace. Investiga sobre los headers del protocolo http. On Sun, 2008-05-04 at 21:12 -0700, punchik punchik wrote: > hola, soy novato en python, he estado tratando de correr varios scripts en mi servidor web pero no me funciona, en todos me sale el mismo error, alguien tiene idea de porque sucede esto? mi servidor es dreamhost y si soporta scripts de python, no entiendo porque no lo reconoce, tendre que activar algo ? alguna idea?.. el error es el siguiente: > > gracias > > > 500 internal server error > Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. > Please contact the server administrator, webmaster@metalex.net and inform them of the time the error occurred, and anything you might have done that may have caused the error. > More information about this error may be available in the server error log. > Additionally, a 404 Not Found error was encountered > > > > > --------------------------------- > Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try it now. > _______________________________________________ > 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/20080504/44f06ae2/attachment.pgp From punchikk en yahoo.com Mon May 5 06:28:50 2008 From: punchikk en yahoo.com (punchik punchik) Date: Mon May 5 06:29:03 2008 Subject: [Python-es] correr archivos python en servidor In-Reply-To: <1209961437.14592.5.camel@cucusa> Message-ID: <24653.89055.qm@web32001.mail.mud.yahoo.com> el archivo python si envia la salida con formato html.. aca esta el codigo: #!/usr/bin/python import cgitb cgitb.enable() print "Content-type: text/html" print import time print "" print "" print "Penzilla.net: What is the Time? Example" print "" print "" print "

Penzilla.net What is the Time?(wittime.py) Example:

" print "

Penzilla thinks that it is: %s

" % time.ctime() print "" print "" Marco Antonio Islas Cruz wrote: Los scripts en Python, asi como cualquier otro CGI deben enviar la salida con formato HTML, incluyendo los headers. PHP lo hace, solo que no te das cuenta de que lo hace. Investiga sobre los headers del protocolo http. On Sun, 2008-05-04 at 21:12 -0700, punchik punchik wrote: > hola, soy novato en python, he estado tratando de correr varios scripts en mi servidor web pero no me funciona, en todos me sale el mismo error, alguien tiene idea de porque sucede esto? mi servidor es dreamhost y si soporta scripts de python, no entiendo porque no lo reconoce, tendre que activar algo ? alguna idea?.. el error es el siguiente: > > gracias > > > 500 internal server error > Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. > Please contact the server administrator, webmaster@metalex.net and inform them of the time the error occurred, and anything you might have done that may have caused the error. > More information about this error may be available in the server error log. > Additionally, a 404 Not Found error was encountered > > > > > --------------------------------- > Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try it now. > _______________________________________________ > 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 --------------------------------- Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try it now. From fvillarroel en yahoo.com Mon May 5 07:06:30 2008 From: fvillarroel en yahoo.com (FERNANDO VILLARROEL) Date: Mon May 5 07:06:41 2008 Subject: [Python-es] SqlAlchemy & Postgres & TG2.0 Message-ID: <483069.27922.qm@web34308.mail.mud.yahoo.com> Hola amigos, Haber luego de varios dias dandole vuelta a un error que obtengo al probar con TurboGears 2.0 : UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 47: ordinal not in range(128) Me doy cuenta que el problema es el paso de atributos; es decir al momento de efectuar un Insert desde un formulario generado con Crud, el atributo Id que corresponde precisamente a la primary_key de la tabla no tiene valor; mirando el log de Postgres : 2008-05-05 00:48:22 CLT SENTENCIA: INSERT INTO test (id, nombre) VALUES (NULL, 'Carlos') No se a que se debe ya que segui las instrucciones del how to: http://docs.turbogears.org/2.0/RoughDocs/BootStrap Y ademas personalice el formulario respectivo para que me solicite todos los datos; ya que leyendo adverti que para los atributos que son primary_key en el formulario quedan desabilitados por defecto. El asunto que la tabla que estoy probando tiene dos atributos (id, nombre) y en el formulario (new_form) me solicta ambos datos. Pero id llega con valor NULL al motor. Estoy mapeando el schema desde TG: model/__init__py. class Test(object): pass def init_model(engine): """Call me before using any of the tables or classes in the model.""" test = Table("test", metadata, autoload=True, autoload_with=engine) mapper(Test, test) y en testform.py donde personalizo los datos a solicitar para editar o insertar: # Use dbsprockets makeForm # http://code.google.com/p/dbsprockets/wiki/Primitives from holamundo.model import DBSession, Test from dbsprockets.primitives import makeForm #new_form = makeForm(Test, action="create", omittedFields=['id']) #edit_form = makeForm(Test, action="update", hiddenFields=['id']) # Use Widget Form from tw import forms from tw.api import WidgetsList from tw.forms import validators class TestForm(forms.TableForm): """ToscaWidgets form builder""" class fields(WidgetsList): """fields definitions. Replace to your Fields""" name="Test" id = forms.TextField(label="Id", validator = validators.Int(not_empty=True)) nombre = forms.TextField(label="Nombre", validator = validators.UnicodeString(not_empty=True, max=10)) new_form = TestForm("new_form", action="create") edit_form = TestForm("edit_form", action="update") Espero se entienda y alguien me de alguna idea. Fernando. ____________________________________________________________________________________ Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try it now. http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ From morillas en gmail.com Mon May 5 08:00:28 2008 From: morillas en gmail.com (Luis Miguel Morillas) Date: Mon May 5 08:00:41 2008 Subject: [Python-es] SqlAlchemy & Postgres & TG2. In-Reply-To: <483069.27922.qm@web34308.mail.mud.yahoo.com> References: <483069.27922.qm@web34308.mail.mud.yahoo.com> Message-ID: <68d25cbc0805042300n3535602bx531f3152a6565ac0@mail.gmail.com> El día 5 de mayo de 2008 7:06, FERNANDO VILLARROEL escribió: > Hola amigos, > > Haber luego de varios dias dandole vuelta a un error > que obtengo al probar con TurboGears 2.0 : > > UnicodeDecodeError: 'ascii' codec can't decode byte > 0xc2 in position 47: ordinal not in range(128) > Tienes un problema con unicode. Python usa por defecto como encoding ascii. La cadena que intentas usar tiene un carácter 0xc2 que no tiene correspondencia en ese encoding y lanza la excepción. Dile al sistema el encoding que estás usando cuando tiene que convertir a unicode. El carácter que estás usando supongo que es una  por el mensaje que muestras. Si usas unicode('cadena con Â', iso-8859-1) ya no dará el error. Aquí tienes una minimini guía, que al final tiene bibliografía http://crysol.inf-cr.uclm.es/node/454 > Me doy cuenta que el problema es el paso de atributos; > es decir al momento de efectuar un Insert desde un > formulario generado con Crud, el atributo Id que > corresponde precisamente a la primary_key de la tabla > no tiene valor; mirando el log de Postgres : > > 2008-05-05 00:48:22 CLT SENTENCIA: INSERT INTO test > (id, nombre) VALUES (NULL, 'Carlos') > > No se a que se debe ya que segui las instrucciones del > how to: > > http://docs.turbogears.org/2.0/RoughDocs/BootStrap > > Y ademas personalice el formulario respectivo para que > me solicite todos los datos; ya que leyendo adverti > que para los atributos que son primary_key en el > formulario quedan desabilitados por defecto. El asunto > que la tabla que estoy probando tiene dos atributos > (id, nombre) y en el formulario (new_form) me solicta > ambos datos. Pero id llega con valor NULL al motor. > > Estoy mapeando el schema desde TG: > > model/__init__py. > > class Test(object): > pass > > > def init_model(engine): > """Call me before using any of the tables or > classes in the model.""" > > test = Table("test", metadata, > autoload=True, autoload_with=engine) > mapper(Test, test) > > > > y en testform.py donde personalizo los datos a > solicitar para editar o insertar: > > # Use dbsprockets makeForm > # http://code.google.com/p/dbsprockets/wiki/Primitives > from holamundo.model import DBSession, Test > > from dbsprockets.primitives import makeForm > #new_form = makeForm(Test, action="create", > omittedFields=['id']) > #edit_form = makeForm(Test, action="update", > hiddenFields=['id']) > > # Use Widget Form > from tw import forms > from tw.api import WidgetsList > from tw.forms import validators > > class TestForm(forms.TableForm): > """ToscaWidgets form builder""" > class fields(WidgetsList): > """fields definitions. Replace to your > Fields""" > name="Test" > id = forms.TextField(label="Id", validator = > validators.Int(not_empty=True)) > nombre = forms.TextField(label="Nombre", > validator = validators.UnicodeString(not_empty=True, > max=10)) > > new_form = TestForm("new_form", action="create") > edit_form = TestForm("edit_form", action="update") > > > > Espero se entienda y alguien me de alguna idea. > > Fernando. > > > > ____________________________________________________________________________________ > Be a better friend, newshound, and > know-it-all with Yahoo! Mobile. Try it now. http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes > -- Saludos, -- Luis Miguel From a.porrua en gmail.com Mon May 5 10:03:12 2008 From: a.porrua en gmail.com (antonio) Date: Mon May 5 10:12:36 2008 Subject: [Python-es] correr archivos python en servidor In-Reply-To: <24653.89055.qm@web32001.mail.mud.yahoo.com> References: <24653.89055.qm@web32001.mail.mud.yahoo.com> Message-ID: <1209974592.6382.7.camel@nos> A mi me suena a que el script da un error, pero el código que has enviado es correcto... Haz lo siguiente si no has hecho ya. 1. Comprueba el log del servidor. 2. Comprueba los permisos de ejecución del script. 3. Comprueba que la ruta a python es correcta. 4. Comprueba que el script no da error. 5. Haz un exorcismo al servidor xDD El dom, 04-05-2008 a las 21:28 -0700, punchik punchik escribió: > el archivo python si envia la salida con formato html.. aca esta el codigo: > > > > #!/usr/bin/python > import cgitb > cgitb.enable() > print "Content-type: text/html" > print > import time > print "" > print "" > print "Penzilla.net: What is the Time? Example" > print "" > print "" > print "

Penzilla.net What is the Time?(wittime.py) Example:

" > print "

Penzilla thinks that it is: %s

" % time.ctime() > print "" > print "" > > Marco Antonio Islas Cruz wrote: > Los scripts en Python, asi como cualquier otro CGI deben enviar la > salida con formato HTML, incluyendo los headers. PHP lo hace, solo que > no te das cuenta de que lo hace. > > Investiga sobre los headers del protocolo http. > > On Sun, 2008-05-04 at 21:12 -0700, punchik punchik wrote: > > hola, soy novato en python, he estado tratando de correr varios scripts en mi servidor web pero no me funciona, en todos me sale el mismo error, alguien tiene idea de porque sucede esto? mi servidor es dreamhost y si soporta scripts de python, no entiendo porque no lo reconoce, tendre que activar algo ? alguna idea?.. el error es el siguiente: > > > > gracias > > > > > > 500 internal server error > > Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. > > Please contact the server administrator, webmaster@metalex.net and inform them of the time the error occurred, and anything you might have done that may have caused the error. > > More information about this error may be available in the server error log. > > Additionally, a 404 Not Found error was encountered > > > > > > > > > > --------------------------------- > > Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try it now. > > _______________________________________________ > > Lista de correo Python-es > > http://listas.aditel.org/listinfo/python-es > > FAQ: http://listas.aditel.org/faqpyes From damufo en gmail.com Mon May 5 11:43:12 2008 From: damufo en gmail.com (damufo) Date: Mon May 5 12:31:38 2008 Subject: [Python-es] lanzar =?iso-8859-15?q?aplicaci=F3n_y_simular_teclado?= Message-ID: <481ED6B0.7010509@gmail.com> Hola: En win xp Tengo una aplicación .exe que lanza un formulario que me pide un texto (siempre el mismo), Se me ha ocurrido que para automatizar esto pueda lanzar el formulario y simular la salida del teclado para que se cubra el texto de forma automatica. Lo de lanzar la aplicación lo hago así import subprocess exe = "programa.exe" pr = subprocess.Popen(exe, stdin=None, stdout = subprocess.PIPE, stderr=subprocess.PIPE) pr.wait() Esto genera un formulario con el cursor en el campo de texto en el que quiero escribir, aquí es donde quería simular la salida del teclado pero no se como hacerlo. He buscado y no debo estar usando las palabras adecuadas. He visto algo de comunicate(), stdout() pero no se si voy bien. Alguna orientación de por donde puedo buscar? Gracias From rmiranda en estudiantes.uci.cu Mon May 5 13:40:10 2008 From: rmiranda en estudiantes.uci.cu (Raydel Miranda Gomez) Date: Mon May 5 14:35:46 2008 Subject: =?iso-8859-1?Q?RE=3A_=5BPython-es=5D__RE=3A_Comprobar_si_una_cadena_tiene?= =?iso-8859-1?Q?_texto_o_n=FAmeros?= References: <20080503145056.187AE15EF9CC@devnull.aditel.org> Message-ID: import re pattern = re.compile("\d+(\.{1}\d+){0-1}") cadena = "2342asdads1223" cadena_1 = 12312 cadena_2 = 12.09 pattern.match(cadena), devuelve un objeto None, pues la expresion regular dicta: \d+ --> uno a mas digitios (\.{1}\d+){0-1} --> {0-1} lo que esta entre parentesis puede aparecer solo una vez, si aparece dentro del paretesis: (\.{1}\d+) un punto y 1 mas digitos. por supuesto, las cadenas : cadena_1 y cadena_2, van a a matchear. Eso te ahorra el tedioso trabajo de iterar, si el numero es muy grande vas a consumir mucha mas memoria y tiempo. Esta solucion, tambien itera por supuesto, pero cuando python itera por nosotros lo hace mucho mas rapido. ---------------------------------------- Raydel Miranda Gómez Universidad de las Ciencias Informáticas Facultad de Software Libre Desarrollador de Nova Coordinador de la comunidad de Python Despues de terminado el juego , el peon y el rey, regresan a la misma caja. (proverbio italiano) ________________________________ De: python-es-bounces@aditel.org en nombre de Rafael Cantos Enviado el: dom 04.05.2008 5:46 Para: python-es@aditel.org Asunto: [Python-es] RE: Comprobar si una cadena tiene texto o números Muchas gracias aNgel. Saludos. Rafa ¿Hay alguna forma de saber si una cadena, contiene texto o un número? Puedes utilizar isdigit:>>> '1a2b3c'.isdigit()False>>> '123'.isdigit()TrueSaludos.-- > aNgel rEsendiz.! _________________________________________________________________ Tecnología, moda, motor, viajes,...suscríbete a nuestros boletines para estar siempre a la última Guapos y guapas, clips musicales y estrenos de cine. From fjserrano en citic.es Mon May 5 14:49:57 2008 From: fjserrano en citic.es (javier serrano) Date: Mon May 5 15:06:36 2008 Subject: [Python-es] Serializacion de objetos usando XML Message-ID: <481F0275.2070300@citic.es> Hola a todos, este es mi primer mensaje aunque ya llevo un tiempo trabajando con python y twisted. Mi pregunta es: ¿Conocéis alguna librería que permita serializar una clase a xml? Es decir, una vez que tengo un objeto, pasarle dicho objeto a la libreria/funcion y que me devuelva un xml con los atributos de ese objeto, posteriormente podria guardarse en un fichero y luego recuperarlo como un objeto una vez deserializado. Gracias por adelantado From ottomachado en infomed.sld.cu Mon May 5 15:27:15 2008 From: ottomachado en infomed.sld.cu (Otto Machado) Date: Mon May 5 15:28:58 2008 Subject: [Python-es] error con authentication In-Reply-To: <483069.27922.qm@web34308.mail.mud.yahoo.com> References: <483069.27922.qm@web34308.mail.mud.yahoo.com> Message-ID: <003701c8aeb3$c043ffc0$40cbff40$@sld.cu> Hola amigos> Me sucede que tengo una primera pagina web de autenticación que tiene un combobox que es llenado dinámicamente(contiene centros de estudio), en el onchange de ese combo, se invoca una función Java Script que lo que hace es llamar a otra pagina que otro combo dinamico(contiene la lista de usuarios), pero este ultimo se llena en dependencia con lo que se haya llenado el primero, bueno se selecciona el usuario y entonces se escribe la contraseña, en la primera pagina tengo un formulario que contiene el combo de los usuarios(que físicamente no esta en esta pagina porque esta en la segunda) y el texto de la contraseña, en el action del formulario llamo a una función que esta en el script de Python, el botón autenticar por supuesto es de tipo submit, pero el problema esta en que la función necesita el usuario y el password, y solo le esta enviando el password porque no encuentra el combo como un elemento de esa pagina, sin embargo yo trato en un segmento Java script buscar el elmento con el id 'cmb1' y me dice el valor correctamente, que puedo hacer? Gracias por adelantado. Diana From ottomachado en infomed.sld.cu Mon May 5 15:31:11 2008 From: ottomachado en infomed.sld.cu (Otto Machado) Date: Mon May 5 15:31:51 2008 Subject: [Python-es] Serializacion de objetos usando XML In-Reply-To: <481F0275.2070300@citic.es> References: <481F0275.2070300@citic.es> Message-ID: <003801c8aeb4$496262b0$dc272810$@sld.cu> El modulo cPickle se usa para serializar objetos, nunca lo he probado con XML, pero debe servir, porque tiene un método dumps que contiene 2 argumentos uno el objeto a serializar y otro el tipo de serializacion(binario, ASCII). Espero te sirva. Diana -----Mensaje original----- De: python-es-bounces@aditel.org [mailto:python-es-bounces@aditel.org] En nombre de javier serrano Enviado el: lunes, 05 de mayo de 2008 8:50 Para: python-es@aditel.org Asunto: [Python-es] Serializacion de objetos usando XML Hola a todos, este es mi primer mensaje aunque ya llevo un tiempo trabajando con python y twisted. Mi pregunta es: ¿Conocéis alguna librería que permita serializar una clase a xml? Es decir, una vez que tengo un objeto, pasarle dicho objeto a la libreria/funcion y que me devuelva un xml con los atributos de ese objeto, posteriormente podria guardarse en un fichero y luego recuperarlo como un objeto una vez deserializado. Gracias por adelantado _______________________________________________ Lista de correo Python-es http://listas.aditel.org/listinfo/python-es FAQ: http://listas.aditel.org/faqpyes From jjcarles en terra.es Mon May 5 17:41:26 2008 From: jjcarles en terra.es (Joan Carles Jimenez) Date: Mon May 5 17:53:47 2008 Subject: [Python-es] API C de Python Message-ID: <200805051741.26790.jjcarles@terra.es> Hola. No se si esta es la lista adecuada para la siguiente duda. Si no es así, perdonadme. Estoy probando la API C de python (para poder hacer modulos propios para python). Quiero ejecutar comandos de Python desde C y estoy utilizando la instrucción "PyRun_SimpleString(command)", pero me encuentro con dos problemas: 1) No se como capturar el resultado. Por ejemplo: PyRun_SimpleString("a=1"); PyRun_SimpleString("print a"); (me interesaria capturar la salida de "print a") 2) No se como capturar un posible error si la instrucción de python no fuera correcta. ¿Estoy encarando mal el problema? ¿Existe alguna alternativa a PyRun_SimpleString? Si esta no es la lista correcta, ¿conoceis alguna lista donde me puedan resolver este tipo de dudas (que no sean puramente Python? Gracias por adelantado. -- Joan Carles Jimenez jjcarles@terra.es From markuz en islascruz.org Mon May 5 06:44:14 2008 From: markuz en islascruz.org (Marco Antonio Islas Cruz) Date: Mon May 5 18:03:56 2008 Subject: [Python-es] correr archivos python en servidor In-Reply-To: <24653.89055.qm@web32001.mail.mud.yahoo.com> References: <24653.89055.qm@web32001.mail.mud.yahoo.com> Message-ID: <1209962654.14592.9.camel@cucusa> Noup, no confundas http con HTML. HTML es un lenguaje para el marcado de texto, en cambio, http es un protocolo. No digo que no envies el texto en HTML, pero asegurate de enviar los encabezados en http. Otro problema que podrias tener serian los permisos del archivo en el servidor. Algunos servidores no trabajaran si tienes mal los permisos de tu script. Que tengas buenas noches (desde mexico) On Sun, 2008-05-04 at 21:28 -0700, punchik punchik wrote: > el archivo python si envia la salida con formato html.. aca esta el codigo: > > > > #!/usr/bin/python > import cgitb > cgitb.enable() > print "Content-type: text/html" > print > import time > print "" > print "" > print "Penzilla.net: What is the Time? Example" > print "" > print "" > print "

Penzilla.net What is the Time?(wittime.py) Example:

" > print "

Penzilla thinks that it is: %s

" % time.ctime() > print "" > print "" > > Marco Antonio Islas Cruz wrote: > Los scripts en Python, asi como cualquier otro CGI deben enviar la > salida con formato HTML, incluyendo los headers. PHP lo hace, solo que > no te das cuenta de que lo hace. > > Investiga sobre los headers del protocolo http. > > On Sun, 2008-05-04 at 21:12 -0700, punchik punchik wrote: > > hola, soy novato en python, he estado tratando de correr varios scripts en mi servidor web pero no me funciona, en todos me sale el mismo error, alguien tiene idea de porque sucede esto? mi servidor es dreamhost y si soporta scripts de python, no entiendo porque no lo reconoce, tendre que activar algo ? alguna idea?.. el error es el siguiente: > > > > gracias > > > > > > 500 internal server error > > Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. > > Please contact the server administrator, webmaster@metalex.net and inform them of the time the error occurred, and anything you might have done that may have caused the error. > > More information about this error may be available in the server error log. > > Additionally, a 404 Not Found error was encountered > > > > > > > > > > --------------------------------- > > Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try it now. > > _______________________________________________ > > 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/20080504/496fc9bd/attachment.pgp From falted en pytables.org Mon May 5 19:49:05 2008 From: falted en pytables.org (Francesc Alted) Date: Mon May 5 19:50:00 2008 Subject: [Python-es] Serializacion de objetos usando XML In-Reply-To: <481F0275.2070300@citic.es> References: <481F0275.2070300@citic.es> Message-ID: <200805051949.05553.falted@pytables.org> A Monday 05 May 2008, javier serrano escrigué: > Hola a todos, este es mi primer mensaje aunque ya llevo un tiempo > trabajando con python y twisted. > > Mi pregunta es: > ¿Conocéis alguna librería que permita serializar una clase a xml? > > Es decir, una vez que tengo un objeto, pasarle dicho objeto a la > libreria/funcion y que me devuelva un xml con los atributos de ese > objeto, posteriormente podria > guardarse en un fichero y luego recuperarlo como un objeto una vez > deserializado. > > Gracias por adelantado > > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes Supongo que deben de haber unos tropecientos paquetes que hacen eso. Sin embargo, hace tiempo que usé las utilidades Gnosis y la verdad es que iban muy bien para esas cosas. Aquí tienes un resumen de qué puedes hacer con ellas: http://gnosis.cx/download/Gnosis_Utils.ANNOUNCE Saludos, -- Francesc Alted From kalith.9 en gmail.com Mon May 5 20:36:42 2008 From: kalith.9 en gmail.com (kalith kalith) Date: Mon May 5 20:36:57 2008 Subject: [Python-es] correr archivos python en servidor In-Reply-To: <1209962654.14592.9.camel@cucusa> References: <24653.89055.qm@web32001.mail.mud.yahoo.com> <1209962654.14592.9.camel@cucusa> Message-ID: <3da702830805051136j6257813aob1f0cfc0861afbef@mail.gmail.com> una cosa q yo pregunto corrijanme si me equivoco no hay q instalar un mod en apache para correr scripts en python :S -- Seamos realistas y hagamos lo imposible From minoztro en gmail.com Mon May 5 20:33:15 2008 From: minoztro en gmail.com (Milton Galo Patricio Inostroza Aguilera) Date: Mon May 5 20:40:24 2008 Subject: [Python-es] API C de Python In-Reply-To: <200805051741.26790.jjcarles@terra.es> References: <200805051741.26790.jjcarles@terra.es> Message-ID: <172699c50805051133j5174404br48fdbecf5eee925f@mail.gmail.com> 2008/5/5 Joan Carles Jimenez : > Hola. > > No se si esta es la lista adecuada para la siguiente duda. Si no es así, > perdonadme. Estoy probando la API C de python (para poder hacer modulos Huyy yo tampoco se eso y he hecho algunas preguntas sobre este tema > propios para python). Quiero ejecutar comandos de Python desde C y estoy > utilizando la instrucción "PyRun_SimpleString(command)", pero me encuentro > con dos problemas: Soy novato en este ámbito de Python, pero veamos en que te puedo ayudar > > 1) No se como capturar el resultado. Por ejemplo: > PyRun_SimpleString("a=1"); > PyRun_SimpleString("print a"); > (me interesaria capturar la salida de "print a") a que te refieres con capturar la salida?...segun la documentacion esta funcion retorna un 0 si es exitosa o un -1 cuando algo falla > > 2) No se como capturar un posible error si la instrucción de python no fuera > correcta. if (!PyRun_SimpleString("import no existe")) { return alguna_exception ´o simplemente NULL } > > ¿Estoy encarando mal el problema? ¿Existe alguna alternativa a > PyRun_SimpleString? Si esta no es la lista correcta, ¿conoceis alguna lista > donde me puedan resolver este tipo de dudas (que no sean puramente Python? si pudieras explicar el contexto general de tu problema...seria mejor > > Gracias por adelantado. buen dia > > > -- > Joan Carles Jimenez > jjcarles@terra.es > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes > -- Milton Inostroza Aguilera From jjcarles en terra.es Mon May 5 21:31:14 2008 From: jjcarles en terra.es (Joan Carles Jimenez) Date: Mon May 5 21:31:26 2008 Subject: [Python-es] API C de Python In-Reply-To: <172699c50805051133j5174404br48fdbecf5eee925f@mail.gmail.com> References: <200805051741.26790.jjcarles@terra.es> <172699c50805051133j5174404br48fdbecf5eee925f@mail.gmail.com> Message-ID: <200805052131.14752.jjcarles@terra.es> > a que te refieres con capturar la salida?...segun la documentacion > esta funcion retorna un 0 si es exitosa o un -1 cuando algo falla A ver si me explico mejor. Cuando me refiero a capturar la salida, me refiero a la salida de la instruccion python. Es decir, si ejecuto las siguientes lineas ... PyRun_SimpleString("a='hola '"); PyRun_SimpleString("b='mundo'); PyRun_SimpleString("c=a+b"); PyRun_SimpleString("print c"); ..., quiero recuperar la salida de la instrucción 'print c', que seria 'hola mundo'. En python seria: >>> a='hola ' >>> b='mundo' >>> c=a+b >>> print c hola mundo Es ese "hola mundo" el que quiero guardar en una variable de C Gracias. -- Joan Carles Jimenez jjcarles@terra.es From punchikk en yahoo.com Mon May 5 21:33:06 2008 From: punchikk en yahoo.com (punchik punchik) Date: Mon May 5 21:33:23 2008 Subject: [Python-es] correr archivos python en servidor In-Reply-To: <3da702830805051136j6257813aob1f0cfc0861afbef@mail.gmail.com> Message-ID: <215142.93179.qm@web32005.mail.mud.yahoo.com> hola, gracias por las respuestas. He probado con muchos scripts cgi python y todos me da el mismo error, siguiendo los consejos de la lista he comprobado la ruta, tambien los permisos , los cuales estan todos activados. luego mirando el archivo error.log me sale este mensaje: [Sun May 04 20:54:57 2008] [error] [client 201.230.77.75] Premature end of script headers: time.py, referer: http://www.kiplix.net/moco.html en la pagina web de dreamhost dice que no necesito instalar ningun mod para correr python , que ya viene preinstalado,,, he buscado informacion en internet sobre "Premature end of script headers" pero no he encontrado nada claro, en una web lei que el problema podria deberse a que el archivo python a sido grabado usando un editor de texto de windows que normalmente graba los archivos de texto con "\r\n" para marcar el final de una linea y que deberia grabarse como un file formato "unix" que solo usa "/n" , bueno he probado grabando con distintos editores de texto y tambien desde macosx pero sigo teniendo el mismo problema. Alguien tiene alguna idea? gracias kalith kalith wrote: una cosa q yo pregunto corrijanme si me equivoco no hay q instalar un mod en apache para correr scripts en python :S -- Seamos realistas y hagamos lo imposible _______________________________________________ Lista de correo Python-es http://listas.aditel.org/listinfo/python-es FAQ: http://listas.aditel.org/faqpyes --------------------------------- Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try it now. From markuz en islascruz.org Mon May 5 21:54:08 2008 From: markuz en islascruz.org (Marco Antonio Islas Cruz) Date: Mon May 5 22:21:05 2008 Subject: [Python-es] correr archivos python en servidor In-Reply-To: <215142.93179.qm@web32005.mail.mud.yahoo.com> References: <215142.93179.qm@web32005.mail.mud.yahoo.com> Message-ID: <1210017248.7765.8.camel@cucusa> Aqui esta el problema: <> On Mon, 2008-05-05 at 12:33 -0700, punchik punchik wrote: > hola, gracias por las respuestas. He probado con muchos scripts cgi python y todos me da el mismo error, siguiendo los consejos de la lista he comprobado la ruta, tambien los permisos , los cuales estan todos activados. luego mirando el archivo error.log me sale este mensaje: > [Sun May 04 20:54:57 2008] [error] [client 201.230.77.75] Premature end of script headers: time.py, referer: http://www.kiplix.net/moco.html > > en la pagina web de dreamhost dice que no necesito instalar ningun mod para correr python , que ya viene preinstalado,,, > he buscado informacion en internet sobre "Premature end of script headers" pero no he encontrado nada claro, en una web lei que el problema podria deberse a que el archivo python a sido grabado usando un editor de texto de windows que normalmente graba los archivos de texto con "\r\n" para marcar el final de una linea y que deberia grabarse como un file formato "unix" que solo usa "/n" , bueno he probado grabando con distintos editores de texto y tambien desde macosx pero sigo teniendo el mismo problema. > > Alguien tiene alguna idea? > > gracias > > > kalith kalith wrote: > una cosa q yo pregunto corrijanme si me equivoco no hay q instalar un mod en > apache para correr scripts en python :S -- <--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/20080505/4789584a/attachment.pgp From fvillarroel en yahoo.com Mon May 5 22:44:34 2008 From: fvillarroel en yahoo.com (FERNANDO VILLARROEL) Date: Mon May 5 22:44:47 2008 Subject: [Python-es] SqlAlchemy & Postgres & TG2. In-Reply-To: <68d25cbc0805042300n3535602bx531f3152a6565ac0@mail.gmail.com> Message-ID: <65048.71988.qm@web34307.mail.mud.yahoo.com> Hola Gracias Miguel. El asunto es que no se como personalizar el formato en la aplicacion TG2.0, he leido que se puede resolver usando un script en sitecustomize.py import sys sys.setdefaultencoding("UTF-8") Pero que no es la mejor solucion al tema tampoco. He visto el link que me enviaste y el tema es claro, pero no le encuentro la vuelta en la aplicacion TG2.0 para que funcione. Bueno de momento continuo investigando, a menos que alguien connosca la receta. Atte. Fernando > Tienes un problema con unicode. Python usa por > defecto como encoding > ascii. La cadena que intentas usar tiene un carácter > 0xc2 que no tiene > correspondencia en ese encoding y lanza la > excepción. Dile al sistema > el encoding que estás usando cuando tiene que > convertir a unicode. El > carácter que estás usando supongo que es una  por > el mensaje que > muestras. Si usas unicode('cadena con Â', > iso-8859-1) ya no dará el > error. > Aquí tienes una minimini guía, que al final tiene > bibliografía > http://crysol.inf-cr.uclm.es/node/454 > > > Saludos, > > -- > > Luis Miguel > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes > ____________________________________________________________________________________ Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try it now. http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ From morillas en gmail.com Mon May 5 23:25:17 2008 From: morillas en gmail.com (Luis Miguel Morillas) Date: Mon May 5 23:25:29 2008 Subject: [Python-es] SqlAlchemy & Postgres & TG2 In-Reply-To: <65048.71988.qm@web34307.mail.mud.yahoo.com> References: <68d25cbc0805042300n3535602bx531f3152a6565ac0@mail.gmail.com> <65048.71988.qm@web34307.mail.mud.yahoo.com> Message-ID: <68d25cbc0805051425k429690e7i8f6242df058338fd@mail.gmail.com> El día 5 de mayo de 2008 22:44, FERNANDO VILLARROEL escribió: > Hola Gracias Miguel. > > El asunto es que no se como personalizar el formato en > la aplicacion TG2.0, he leido que se puede resolver > usando un script en > > sitecustomize.py > > import sys > sys.setdefaultencoding("UTF-8") No. Eso no tienes que hacerlo nunca. Harías que la aplicación sólo funcionara es un python configurado con esas características. > > Pero que no es la mejor solucion al tema tampoco. He > visto el link que me enviaste y el tema es claro, pero > no le encuentro la vuelta en la aplicacion TG2.0 para > que funcione. > > Bueno de momento continuo investigando, a menos que > alguien connosca la receta. > No hay que investigar mucho. Usa Unicode siempre y ya está :-) ¿dónde tienes el problema? > Atte. > > Fernando > > > Tienes un problema con unicode. Python usa por > > defecto como encoding > > ascii. La cadena que intentas usar tiene un carácter > > 0xc2 que no tiene > > correspondencia en ese encoding y lanza la > > excepción. Dile al sistema > > el encoding que estás usando cuando tiene que > > convertir a unicode. El > > carácter que estás usando supongo que es una  por > > el mensaje que > > muestras. Si usas unicode('cadena con Â', > > iso-8859-1) ya no dará el > > error. > > Aquí tienes una minimini guía, que al final tiene > > bibliografía > > http://crysol.inf-cr.uclm.es/node/454 > > > > > > > Saludos, > > > > -- > > > > Luis Miguel > > _______________________________________________ > > Lista de correo Python-es > > http://listas.aditel.org/listinfo/python-es > > FAQ: http://listas.aditel.org/faqpyes > > > > > > > ____________________________________________________________________________________ > Be a better friend, newshound, and > know-it-all with Yahoo! Mobile. Try it now. http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes > -- Saludos, -- Luis Miguel From fvillarroel en yahoo.com Mon May 5 23:43:40 2008 From: fvillarroel en yahoo.com (FERNANDO VILLARROEL) Date: Mon May 5 23:43:57 2008 Subject: [Python-es] SqlAlchemy & Postgres & TG2 In-Reply-To: <68d25cbc0805051425k429690e7i8f6242df058338fd@mail.gmail.com> Message-ID: <831832.36109.qm@web34303.mail.mud.yahoo.com> Hola, Bueno si mi problema es donde le digo a la aplicacion TG2.0 que tipo de unicode debe usar. En realidad que use utf-8 en lugar de ASCII que es el default O se debe debe definir en la aplicacion TG2.0 --- Luis Miguel Morillas wrote: > > No hay que investigar mucho. Usa Unicode siempre y > ya está :-) ¿dónde > tienes el problema? > > > ____________________________________________________________________________________ Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try it now. http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ From patovala en pupilabox.net.ec Mon May 5 20:33:32 2008 From: patovala en pupilabox.net.ec (Patricio Valarezo Lozano) Date: Tue May 6 01:21:06 2008 Subject: [Python-es] implicaciones de usar property, setters y getters Message-ID: <481F52FC.7070100@pupilabox.net.ec> Hola, quisiera por favor que alguien me pudiera explicar la verdadera necesidad de usar property para definir getters y setters o para poder acceder a funciones privadas, me explico mejor: Estoy revisando un código que usa Elixir(1) para definir un mapper a una base de datos, usa el siguiente código: class Person(Entity): id = Field(Integer, primary_key=True) name = Field(String(50), required=True) biography = Field(Text) photo = Field(Binary, deferred=True) _email = Field(String(20), colname='email', synonym='email') def _set_email(self, email): self._email = email def _get_email(self): return self._email email = property(_get_email, _set_email) Aquí ha declarado _email como privado (por el _ ) y luego define _set_email y _get_email para poder acceder a esta propiedad, luego define con property las propiedades y las asigna a email, ahora se podría acceder a _email mediante .email, estoy en lo correcto?. Mi pregunta realmente es Por qué molestarse haciendo todo esto si a podría definir email = Field(...) como definió photo y los otros atributos??. He leído en alguna parte que en Python lo de setters y getters no es muy bien visto (puesto que proviene de programadores acostumbrados al java y sus beans). tomando en cuenta que Python es un lenguaje que da al programador una gran libertad, quisiera que me dijeran cual es la ventaja real de usar _atributo y luego acceder con property? de que me estaría perdiendo si no lo hiciera así? saludos y gracias por sus comentarios Patricio Valarezo. (1) http://elixir.ematia.de/apidocs/elixir.fields.html -- patoVala Linux User#280504 Hablando en http://www.elprimoalcahuete.com "Someone whom you reject today, will reject you tomorrow." From minoztro en gmail.com Tue May 6 01:45:08 2008 From: minoztro en gmail.com (Milton Galo Patricio Inostroza Aguilera) Date: Tue May 6 01:45:22 2008 Subject: [Python-es] API C de Python In-Reply-To: <200805052131.14752.jjcarles@terra.es> References: <200805051741.26790.jjcarles@terra.es> <172699c50805051133j5174404br48fdbecf5eee925f@mail.gmail.com> <200805052131.14752.jjcarles@terra.es> Message-ID: <172699c50805051645w5660a7e4m5f8753dad0bf70ce@mail.gmail.com> El día 5 de mayo de 2008 15:31, Joan Carles Jimenez escribió: > > a que te refieres con capturar la salida?...segun la documentacion > > esta funcion retorna un 0 si es exitosa o un -1 cuando algo falla > > A ver si me explico mejor. Cuando me refiero a capturar la salida, me refiero > a la salida de la instruccion python. Es decir, si ejecuto las siguientes > lineas ... > > PyRun_SimpleString("a='hola '"); > PyRun_SimpleString("b='mundo'); > PyRun_SimpleString("c=a+b"); bueno aca debieras hacer un Py_BuildValue para la variable a, luego para la variable b y después hacer un PyString_Concat...pero pienso que es muy especifica la solución que te estoy dando, así que no se si te servirá > PyRun_SimpleString("print c"); lo otro que se me ocurre es mirar en las variables locales...en python lo hacemos con locals, pero en el api de C no encontré tal equivalencia, solo encontré la equivalencia de dir, pero no sirve... > > ..., quiero recuperar la salida de la instrucción 'print c', que seria 'hola > mundo'. > > En python seria: > > >>> a='hola ' > >>> b='mundo' > >>> c=a+b > >>> print c > hola mundo aca si preguntas en locals()['c'] tienes tu valor...en C busque toda la tarde y no fui capaz de encontrarlo =/...quizás los que saben más pueden ayudar :D > > Es ese "hola mundo" el que quiero guardar en una variable de C > > Gracias. > > -- > > > Joan Carles Jimenez > jjcarles@terra.es > > _______________________________________________ > Lista de correo Python-es > http://listas.aditel.org/listinfo/python-es > FAQ: http://listas.aditel.org/faqpyes > -- Milton Inostroza Aguilera From pych3m4 en gmail.com Tue May 6 02:51:02 2008 From: pych3m4 en gmail.com (Chema Cortes) Date: Tue May 6 02:51:15 2008 Subject: [Python-es] implicaciones de usar property, setters y getters In-Reply-To: <481F52FC.7070100@pupilabox.net.ec> References: <481F52FC.7070100@pupilabox.net.ec> Message-ID: <2c9fb0dd0805051751u51323d52k50a8517fe5e857dd@mail.gmail.com> El día 5 de mayo de 2008 20:33, Patricio Valarezo Lozano escribió: > Hola, quisiera por favor que alguien me pudiera explicar la verdadera > necesidad de usar property para definir getters y setters o para poder > acceder a funciones privadas, me explico mejor: > > Estoy revisando un código que usa Elixir(1) para definir un mapper a una > base de datos, usa el siguiente código: > > > class Person(Entity): > id = Field(Integer, primary_key=True) > name = Field(String(50), required=True) > biography = Field(Text) > photo = Field(Binary, deferred=True) > _email = Field(String(20), colname='email', synonym='email') > > def _set_email(self, email): > self._email = email > def _get_email(self): > return self._email > email = property(_get_email, _set_email) > > > Aquí ha declarado _email como privado (por el _ ) y luego define _set_email > y _get_email para poder acceder a esta propiedad, luego define con property > las propiedades y las asigna a email, ahora se podría acceder a _email > mediante .email, estoy en lo correcto?. Mi pregunta realmente es Por > qué molestarse haciendo todo esto si a podría definir email = Field(...) > como definió photo y los otros atributos??. Yo diría que es equivalente, un ejemplo trivial donde mostrar cómo se podrían especializar los accesores. > He leído en alguna parte que en Python lo de setters y getters no es muy > bien visto (puesto que proviene de programadores acostumbrados al java y sus > beans). tomando en cuenta que Python es un lenguaje que da al programador > una gran libertad, quisiera que me dijeran cual es la ventaja real de usar > _atributo y luego acceder con property? de que me estaría perdiendo si no lo > hiciera así? Bueno, lo de usar métodos accesores para acceder a los atributos de un objeto es bastante más viejo que los javabeans (eg: visual basic 5). En realidad es parte del paradigma de la programación orientada a objetos, un modo de exponer datos encapsulados que se encontraban en los interfaces privados o protegidos. El agruparlos en "propiedades" (properties) es más por mejorar la legibilidad que por otra cosa, ya que en python existían los "descriptores" que podían hacer esta misma función (de hecho property() no es más que un data-descriptor especializado). El uso de accesores permite definir atributos de sólo lectura, de "sólo una escritura" ("one-shot var") o con control de acceso. También permiten crear "disparadores" ("triggers") para cuando cambia un atributo, o "acopladores", para hacer encajar un interfaz en otro. Un ejemplo de esto último sería cuando tienes una base de datos con datos en unidades diferentes a las que usa la aplicación. Con los accesores podrías hacer que las conversiones de unidades se hicieran de modo transparente. Otra razón, no menos importante, tiene que ver con la refactorización del código. Si todo acceso se hace a través de accesores, es más fácil luego llevar el atributo a otro sitio. PD: seguramente Field() también sea un data-descriptor con métodos __set__/__get__ . From gagsl-py2 en yahoo.com.ar Tue May 6 07:39:22 2008 From: gagsl-py2 en yahoo.com.ar (Gabriel Genellina) Date: Tue May 6 07:39:48 2008 Subject: [Python-es] Re: API C de Python References: <200805051741.26790.jjcarles@terra.es> <172699c50805051133j5174404br48fdbecf5eee925f@mail.gmail.com> <200805052131.14752.jjcarles@terra.es> Message-ID: En Mon, 05 May 2008 16:31:14 -0300, Joan Carles Jimenez escribió: >> a que te refieres con capturar la salida?...segun la documentacion >> esta funcion retorna un 0 si es exitosa o un -1 cuando algo falla > > A ver si me explico mejor. Cuando me refiero a capturar la salida, me > refiero > a la salida de la instruccion python. Es decir, si ejecuto las siguientes > lineas ... > > PyRun_SimpleString("a='hola '"); > PyRun_SimpleString("b='mundo'); > PyRun_SimpleString("c=a+b"); > PyRun_SimpleString("print c"); > > ..., quiero recuperar la salida de la instrucción 'print c', que seria > 'hola > mundo'. Ese `print c` hace basicamente sys.stdout.write(str(c)) seguido de un fin de linea. Asi que, igual que si fuera codigo Python puro, tendrias que reemplazar sys.stdout por un objeto tuyo que "atrape" todo lo que se imprime. Pero lo veo realmente muy rebuscado - que es lo que realmente estas queriendo hacer? -- Gabriel Genellina From gagsl-py2 en yahoo.com.ar Tue May 6 07:50:26 2008 From: gagsl-py2 en yahoo.com.ar (Gabriel Genellina) Date: Tue May 6 07:50:47 2008 Subject: [Python-es] Re: =?iso-8859-15?q?lanzar_aplicaci=F3n_y_simular_teclado?= References: <481ED6B0.7010509@gmail.com> Message-ID: En Mon, 05 May 2008 06:43:12 -0300, damufo escribió: > En win xp > Tengo una aplicación .exe que lanza un formulario que me pide un texto > (siempre el mismo), Se me ha ocurrido que para automatizar esto pueda > lanzar el formulario y simular la salida del teclado para que se cubra > el texto de forma automatica. [codigo usando subprocess.Popen y PIPE] Eso sirve para controlar aplicaciones de consola, que usan la entrada estandar. Pero las aplicaciones de ventana la ignoran totalmente. En este caso te conviene usar pywinauto, una libreria diseñada para automatizar aplicaciones; aparte de simular ingreso por teclado, se puede simular un click en un boton, o una seleccion de menu, lo que quieras. (Nota sobre las dependencias: si estas usando Python 2.5 no hace falta instalar ctypes por separado) -- Gabriel Genellina From jjcarles en terra.es Tue May 6 11:35:02 2008 From: jjcarles en terra.es (Joan Carles Jimenez) Date: Tue May 6 11:35:28 2008 Subject: [Python-es] API C de Python In-Reply-To: <172699c50805051645w5660a7e4m5f8753dad0bf70ce@mail.gmail.com> References: <200805051741.26790.jjcarles@terra.es> <200805052131.14752.jjcarles@terra.es>